समझ व्यर्थ: चालाक नई Ethereum भाषा

व्यपर पर एक व्यापक गाइड, स्लिक न्यू एथेरेम भाषा

वीपर एक सामान्य-उद्देश्यीय, प्रायोगिक प्रोग्रामिंग भाषा है जो सॉलिडिटी के रूप में EVM (Ethereum Virtual Machine) bytecode से संकलित होती है। हालाँकि, वाइपर को आसानी से समझने वाले स्मार्ट कॉन्ट्रैक्ट्स बनाने के लिए प्रक्रिया को बड़े पैमाने पर सरल बनाने के लिए डिज़ाइन किया गया है, जिसमें शामिल सभी पक्षों के लिए अधिक पारदर्शी हैं, और एक हमले के लिए प्रवेश के कम बिंदु हैं.

EVM को लक्षित करने वाला कोई भी कोड स्मार्ट कॉन्ट्रैक्ट्स को निष्पादित करने के लिए आवश्यक गैस को कम करने के लिए हाइपर-कुशल होना चाहिए, क्योंकि अक्षम कोड के साथ एक अनुबंध का शाब्दिक रूप से निष्पादित करने के लिए अधिक ईथर खर्च होता है, और जल्दी से निषेधात्मक रूप से महंगा हो सकता है, खासकर उपयोग के मामलों में जैसे सूक्ष्म- लेन-देन। अंतिम परिणाम यह है कि व्यपेर तार्किक रूप से सॉलिडिटी के समान दिखता है, और वाक्यात्मक रूप से पायथन के समान है, लेकिन ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग पैराडाइम में से कई के बिना – शायद ट्रांसेक्शनल प्रोग्रामिंग के लिए एक नई प्रतिमान परिभाषा की आवश्यकता होती है.

इन तार्किक और वाक्यविन्यास अंतरों को सीखना अब आपको विश्वस्तरीय व्योपर डेवलपर बनने में मदद करेगा क्योंकि व्यपर अभी भी जून 2018 तक v0.1.0-beta.1 में है।!

समझ में आना

0. पायथन, वायपर और सॉलिडिटी की तुलना

यहाँ, हम व्योपर के उच्च-स्तरीय “क्यों” को कवर करते हैं – हमारे लिए व्यर्थ कोड का विश्लेषण और लिखने के लिए एक स्प्रिंग पॉइंट प्रदान करते हैं, जिसमें स्मार्ट उत्पाद शामिल हैं.

मुख्य सुधार 1: सादगी

व्यपर में अधिकांश प्रोग्रामर से परिचित कई निर्माण शामिल नहीं हैं: क्लास इनहेरिटेंस, फंक्शन ओवरलोडिंग, ऑपरेटर ओवरलोडिंग, और रिकर्सन। ट्यूरिंग-पूर्ण भाषा के लिए इनमें से कोई भी तकनीकी रूप से आवश्यक नहीं है, और वे जटिलता को बढ़ाकर सुरक्षा जोखिमों का प्रतिनिधित्व करते हैं। इस जटिलता के कारण, ये निर्माण स्मार्ट कॉन्ट्रैक्ट्स को समझने और ऑडिट करने के लिए बहुत मुश्किल बना देगा, जिसे सॉलिडिटी कॉन्ट्रैक्ट्स में देखा जाएगा।.

कम आम निर्माण जो शामिल नहीं हैं, वे संशोधक हैं (ये भ्रामक कोड लिखना बहुत आसान बनाते हैं), इनलाइन असेंबली (यह Ctrl + F को तोड़ता है), और बाइनरी फिक्स्ड पॉइंट (अक्सर बाइनरी फिक्स्ड पॉइंट के साथ आवश्यक होते हैं).

मुख्य सुधार 2: सुरक्षा

Vyper डेवलपर्स के शब्दों में, व्य्पर

“अगर वह सुरक्षा बढ़ाने के लक्ष्य के लिए ऐसा करता है तो जानबूझकर चीजों को रोकना या चीजों को कठिन बनाना चाहिए।”

इसलिए, व्यपर्व सॉलिडिटी के लिए एंड-ऑल-बी-ऑल रिप्लेसमेंट नहीं है, बल्कि एक महान भाषा है जहां सुरक्षा सर्वोपरि है, जैसे कि स्मार्ट कॉन्ट्रैक्ट्स के लिए रोगी स्वास्थ्य मेटाडेटा या मॉडल विकेंद्रीकरण के लिए विकेंद्रीकृत AI; pp0।

वायपर कोड और सिंथेटिक अंतर

सुरक्षा और सादगी के लक्ष्यों के लिए प्रयास करते हुए व्यापर को अजगर के समान बनाया गया था, इसलिए भाषाओं का समग्र अनुभव एक ही है, हालांकि इस पर ध्यान देने के लिए कई अंतर हैं.

किसी फ़ाइल को निष्पादित करना

जबकि एक पायथन स्क्रिप्ट को निष्पादित किया जाता है

python file_name.py

, एक vyper स्क्रिप्ट का उपयोग करके संकलित किया जाता है

vyper file_name.vy.

चर बताएं

स्टेट वेरिएबल कॉन्ट्रैक्ट स्टोरेज में स्थायी रूप से स्टोर किए गए मान हैं और ये किसी भी प्रकार के हो सकते हैं, जैसे:

exampleStateVariable: int256.

मानचित्रण

पहली बात एक वीपर कॉन्ट्रैक्ट में होती है, कॉन्ट्रैक्ट स्टोरेज फ़ील्ड, जैसे कि एक टोकन बैलेंस मैपिंग:

संतुलन: सार्वजनिक (wei_value [पता])

जो एक राज्य चर है जो कुंजी और संबंधित मान को परिभाषित करता है.

वाइपर मैपिंग मूल रूप से हैश टेबल होते हैं, जिन्हें ऊपर से देखा जाता है, जैसा कि ऊपर देखा गया है

“हर संभव कुंजी मौजूद है और एक मूल्य के लिए मैप की जाती है जिसका बाइट-प्रतिनिधित्व सभी शून्य है: एक प्रकार का डिफ़ॉल्ट मान।”

मुख्य डेटा मैपिंग में संग्रहीत नहीं किया जाता है, लेकिन इसके मूल्य को देखने के लिए बस इसके keekak256 हैश.

संतुलन को परिभाषित करने में, सार्वजनिक प्रकार () दिया गया है, मैपिंग सिंटैक्स द्वारा पीछा किया जाता है: जहां मूल्य प्रकार wei_value पहले दिया जाता है, उसके बाद वर्ग कोष्ठक में कुंजी (पता) – पायथन की सरणियों से निपटने के समान.

परिभाषाएं

आप देखेंगे कि व्यापर पायथन के समान संकेतों के विपरीत नामों (जैसे कि संतुलन) को परिभाषित करने में एक बृहदान्त्र का उपयोग करता है, हालांकि अजगर 3.6 में वैरिएबल एनोटेशन के लिए एक ही वाक्यविन्यास शामिल है:

संदर्भ = {} # खाली शब्दकोश संदर्भ ["ए"]: 2 # एनोटेट शब्दकोश चर

जहां कोलोन सिंटैक्स वैरिएबल एनोटेशन के लिए होता है, और कोलोन का उपयोग असाइनमेंट ऑपरेटर के रूप में किया जाता है जो केवल एक एनोटेशन असाइन करता है। Vyper इस सिंटैक्स का उपयोग सही मान असाइनमेंट के लिए करता है.

पूर्णांक प्रकार

वायपर के दो पूर्णांक प्रकार हैं: uint256 (गैर-नकारात्मक पूर्णांकों के लिए)) तथा int128 (हस्ताक्षरित पूर्णांक के लिए) – जैसा कि सॉलिडिटी का विरोध है uint8 से uint256 8 के चरणों में, और int8 से int256 के लिए समान (इसका मतलब है कि अंतर प्रकार के लिए 64 अलग-अलग कीवर्ड).

बूलियन, ऑपरेटर, तुलना और कार्य

व्यापर के पास अधिकांश ऑपरेटरों के लिए लगभग समान सिंटैक्स है, जिनमें शामिल हैं:

सच्चे और झूठे बूलियन; नहीं, और, या, ==, और! = ऑपरेटरों; <, <=, ==; = =, >=, और > तुलना; और +, -, *, /, **, और% अंकगणितीय ऑपरेटर (केवल int128 के लिए)

साथ ही कुछ इसी तरह के अंतर्निहित कार्य:

len (x) एक इंट की लंबाई वापस करने के लिए; मंजिल (x) एक दशमलव को निकटतम int तक गोल करने के लिए; और छत (x) एक दशमलव को निकटतम int तक गोल करने के लिए

और कुछ नए:

sha3 (x) sha3 हैश को बाइट्स 32 के रूप में वापस करने के लिए; कई आदानों को समाप्‍त करने के लिए concat (x, …); slice (x, start = _start, len = _len) _start पर शुरू होने वाले _len का टुकड़ा वापस करने के लिए

सूचियों

Vyper में सूचियों को प्रारूप का उपयोग करके घोषित किया जाता है _name: _ValueType [_Integer], मूल्यों को सेट करते समय और रिटर्न स्टेटमेंट में समान सिंटैक्स होता है पाय = थोन.

उदाहरण के लिए:

lst: int128 [3] # एक सूची को परिभाषित करें lst = [1, 2, 3] # मूल्य निर्धारित करें lst [2] = 5 # सूचकांक वापसी lst द्वारा एक मूल्य निर्धारित करें [0] # रिटर्न 1

संरचनाएं

संरचनाएं वे प्रकार हैं जो आप परिभाषित करते हैं, कौन से समूह चर हैं, और उन्हें struct.argname का उपयोग करके एक्सेस किया जाता है, इसलिए (कुछ हद तक पायथन शब्दकोशों के समान):

संरचना: {# संरचना को परिभाषित करते हैं

arg1: int128, arg2: दशमलव

} struct.arg1 = 1 #access संरचना में arg1

परिभाषित करने के तरीके

तरीके (व्यापर में अनुबंध के तरीके) को अजगर और व्यापर में उसी तरह परिभाषित किया गया है:

डीईएफ विधि ():

कुछ करो()

पायथन जो प्रदान करता है उसके अलावा, वैपर में एथेरम-विशिष्ट डेकोरेटर जैसे कि शामिल हैं @Pable और @assert – अनुबंध का उपयोग लेन-देन करने में सक्षम बनाने के लिए किया जाता है और बाद वाला एक बूलियन अभिव्यक्ति लेने में सक्षम होता है:

ध्यान दें फ़ंक्शन function_name (arg1, arg2,…, argx) -> आउटपुट: वाक्य रचना एक समारोह को परिभाषित करने के लिए। पाइथन के विपरीत, वीपर स्पष्ट रूप से डिफ लाइन में आउटपुट प्रकार को परिभाषित करता है ->.

कंस्ट्रक्टर के कार्य

कंस्ट्रक्टर फ़ंक्शंस पायथन के रूप में एक ही सम्मेलन द्वारा जाते हैं और ब्लॉकचेन पर दिए गए अनुबंध और मापदंडों को तत्काल करते हैं। Init प्रोग्राम को इनिशियलाइज़ करता है और केवल एक बार निष्पादित किया जाता है। उदाहरण के लिए:

@ गणतंत्र __init __ (_ नाम: बाइट्स 32, _decimals: uint256, _initialSupply: uint256):

self.name = _name self.decimals = _decimals self.totalSupply = uint256_mul (_initialSupply, uint256_exp (कन्वर्ट (5, ‘uint256)), _decimals)

जैसे कि पायथन में, स्वयं का उपयोग उदाहरण चर को मुखर करने के लिए किया जाता है। उपरोक्त समारोह के साथ सजाया गया है @ रिपब्लिक डेकोरेटर इसे सार्वजनिक दृश्यता देने और बाहरी संस्थाओं को इसे कॉल करने की अनुमति दें (जैसा कि डिफ़ॉल्ट के विपरीत है – या डेकोरेटर को छोड़कर – जो निजी है).

सजाने वाला @स्थिर का उपयोग उन तरीकों को सजाने के लिए किया जाता है जो केवल एक राज्य को पढ़ते हैं, जबकि @ भुगतान योग्य किसी भी विधि को भुगतान के साथ बुलाया जा सकता है.

आयोजन

आप घटनाओं का उपयोग कर लॉग इन कर सकते हैं __log__ अनुक्रमित संरचनाओं में, जैसा कि:

भुगतान: __log __ ({राशि: uint256, param2: अनुक्रमित (पता)}) tot_Pment: uint256 @public def pay ():

self.tot_payment + = msg.value log.payment (msg.value, msg.sender)

लेखन व्यर्थ के अनुबंध

अब, कुछ सरल स्मार्ट अनुबंध लिखें। निम्न कोड स्निपेट अनुबंध को एक NFT (गैर-कवकयुक्त टोकन) प्राप्त करने की अनुमति देता है और उस टोकन के विरुद्ध भेजने में सक्षम होता है.

@public def safeTransferFrom (_from: पता, _to: पता, _tokenId: uint256):

self._validateTransferFrom (_from, _to, _tokenId, msg.sender) सेल्फ ।_doTransfer (_from, _to, _tokenId) यदि (_tocenId) > 0):

वापसी: बाइट्स [4] = raw_call (_to, ‘xf0xb9xe5xba’, बहिष्कार = 4, गैस = msg.gas)

जोर से लौटना == ‘xf0xb9xe5xba’

निम्नलिखित प्रदर्शित करता है @ रिपब्लिक डेकोरेटर, किसी एकल पैरामीटर के साथ एक फ़ंक्शन को परिभाषित करना, जिसे स्पष्ट रूप से एक प्रकार दिया गया है, और एक साधारण कोड बॉडी जो यह पुष्टि करने के लिए कि उपयोगकर्ता को “प्रतिनिधिमंडल के साथ वोटिंग” कार्यक्रम के भाग के रूप में वोट करने का अधिकार है, सत्यापित करने के लिए कथन का उपयोग कर रहा है:

# मतदाता को इस मतपत्र पर वोट देने का अधिकार दें # यह केवल चेयरपर्सन @ रिपब्लिक द्वारा दिया जा सकता है दे_____ोट (मतदाता: पता):

assert msg.sender == self.chairperson # थ्रो अगर प्रेषक चेयरपर्सन नहीं है तो self.voters [वोटर] मत डालें। # फेंका गया यदि मतदाता पहले से ही मतदाता को वोट दे रहा है। मतदाता [मतदाता] वजन 0 नहीं है

self.voters [मतदाता]। वेट = 1 स्व .voter_count + = 1

वाक्य-रचना और तार्किक अंतर पर चर्चा करने के बाद, कोड बहुत डराने वाला नहीं है। vyper.online “प्रतिनिधिमंडल के साथ मतदान” कार्यक्रम के लिए संपूर्ण स्रोत कोड प्रदान करता है, मतदाताओं और प्रस्तावों के लिए संरचना का उपयोग करते हुए, और निम्नलिखित नामित कार्यों के लिए:

डीईएट प्रतिनिधि (अतिरिक्त: पता) -> बूल डिफ सीधे_वोटेड (Addr: पता) -> बूल डिग __init __ (_ प्रस्तावनाम: बाइट्स 32 [2]) डिम दे_इट_टू_वोट (मतदाता: पता) फॉरवर्ड_वेट (डेलिगेट_विथ_वेट_टो_फोवर्ड): एड्रेस डेलिगेट (टू: एड्रेस) डिफ वोट (प्रस्ताव: int128) डीआईजी_प्रोपोसल () को हराया। -> int128 डीप विजेता_नाम () -> बाइट्स 32

किसी भी प्रोग्रामिंग भाषा के साथ, पहले से ही बड़े निर्माण (इस मामले में, फ़ंक्शन अनुबंध) की योजना बनाना प्रोग्रामिंग को बहुत आसान बना देता है। वीपर में ध्यान रखने के लिए प्रमुख अंतर OOP प्रतिमानों की कमी है। विकास के वर्तमान चरण में, आप अभी तक बाहरी कोड कॉल नहीं कर सकते हैं.

बाहरी कोड कॉल की अनुमति के लिए विचार निम्नलिखित विकास सुझाव में देखे जा सकते हैं:

# बाहरी अनुबंध A:

def फू (): निरंतर डीफ़ बार (): # इस अनुबंध अनुबंध B को संशोधित करना: a: baz (): a.foo () a.bar ()

जहां अनुबंध बी, अनुबंध ए पर कॉल करता है, ए के भीतर के तरीकों सहित, सबसे सरल उदाहरण में संभव है.

चल रहे व्योपर

कोड लिखने के साथ पालन करने के लिए, vyper.online पर जाएं, और “स्रोत कोड” टैब के तहत कोड उदाहरण लिखें और तैयार होने पर “संकलन” पर क्लिक करें। व्यापर कार्यान्वयन और परीक्षण-निष्पादन के लिए सबसे अधिक इस्तेमाल किया जाने वाला क्लाइंट (हालांकि पूर्व-अल्फ़ा) में Pyik-EVM है, जिसे शुरू में खुद विटालिक द्वारा विकसित किया गया था, जो उपयोगकर्ता को मुख्य पुस्तकालय को बदलने के बिना ऑपकोड जोड़ने या मौजूदा लोगों को संशोधित करने की अनुमति देता है, जिससे अधिक से अधिक मॉड्यूलर सक्षमता होती है और एक विशिष्ट ग्राहक की तुलना में अधिकता.

Py-EVM प्राप्त करने के लिए, बस पिप इंस्‍टॉल करें py-evm == 0.2.0a16.

३ अ। व्यापर संविदा की तैनाती

जबकि Py-EVM वर्तमान में पूर्व-अल्फ़ा में हैं और उठना-बैठना मुश्किल हो सकता है, वहाँ वीपर कॉन्ट्रैक्ट्स को सार्वजनिक टेस्टनेट (और एक बोनस) पर तैनात करने के दो सरल विकल्प हैं:

1) धुंध या geth में vyper.online से उत्पन्न बाइटकोड को चिपकाएं

2) वर्तमान ब्राउज़र में तैनात करने के लिए myetherwallet अनुबंध मेनू का उपयोग करें 3) (आगामी)

भविष्य में, वीपर पॉपुलस के साथ एकीकृत होगा, जिससे आप आसानी से वीपर कॉन्ट्रैक्ट को तैनात कर सकेंगे

सादगी के लिए, हम विकल्प (1) और मिस्ट (टर्मिनल-आधारित गेट के विपरीत geth के शीर्ष पर एक ताजा यूआई) का उपयोग करके अनुबंधों को लागू करेंगे। चूंकि वीपर सॉलिडिटी के समान बायोटेक के लिए संकलित करता है, हमें किसी भी विशिष्ट-विशिष्ट क्लाइंट की आवश्यकता नहीं है, और ये कुछ हद तक राउंडअबाउट चरणों का पालन कर सकते हैं:

  1. Vyper.online पर जाएं और पहले से भरे हुए “सोर्स कोड” पर “कंपाइल” पर क्लिक करें
  2. “बाइटकोड” टैब के तहत सब कुछ कॉपी करें
  3. यदि आप पहले से ही नहीं हैं, तो अपने OS के लिए धुंध स्थापित करें
  4. नोड को डाउनलोड करने और सिंक करने की अनुमति दें (यह स्वचालित रूप से होता है)
  5. धुंध सेटअप में “टेस्ट नेटवर्क का उपयोग करें” का चयन करें
  6. एक पासवर्ड बनाएं (और इसे याद रखें …)
  7. कॉन्ट्रैक्ट इनपुट करें
  8. धुंध इंटरफेस में “अनुबंध” का चयन करें
  9. “नया नया अनुबंध” चुनें
  10. “अनुबंध बाइट कोड” टैब पर जाएं
  11. बायटेकोड में पेस्ट करें जिसे आपने vyper.online से कॉपी किया है

अनुबंध पर तैनात करें

  1. “DEPLOY” चुनें और पहले से पासवर्ड दर्ज करें
  2. पुष्टि करें कि वीपर अनुबंध पर तैनात किया गया है
  3. धुंध में “बटुए” टैब पर जाएं
  4. “नवीनतम लेन-देन” के लिए नीचे स्क्रॉल करें
  5. आपको उस अनुबंध को देखना चाहिए जिसे हमने अभी तैनात किया है!

*यद्यपि “अनुबंध बनाना” स्थिति है क्योंकि यह खनन और मान्य नहीं है

निष्कर्ष

यह मार्गदर्शिका व्यपर को एक तार्किक और वाक्यविन्यास परिचय प्रदान करती है, जिससे हमें प्रोग्रामिंग शुरू करने और अनुबंधों को लागू करने की अनुमति मिलती है। इस गाइड के ज्ञान के साथ, आपको व्यपर के विकास, इसके प्रलेखन में योगदान करने में सक्षम होना चाहिए, और vyper.online पर कोडिंग करके सीखना जारी रखना चाहिए।.

फिर से, विपर को सॉलिडिटी को बदलने के लिए नहीं बनाया गया है, लेकिन जैसा कि एक अध्ययन में पाया गया कि 34,000 से अधिक असुरक्षित अनुबंध हैं, इस स्थान में मजबूत सुरक्षा की आवश्यकता पहले से कहीं अधिक है, जिससे व्येर को एथेरियम में एक महत्वपूर्ण भविष्य मिल गया है

इसके अलावा पढ़ना और रोडमैप

जैसा कि वैपर अभी भी प्रायोगिक विकास में है, आधिकारिक दस्तावेज और GitHub सबसे व्यापक संसाधन हैं, साथ ही निम्नलिखित मूल्य भी प्रदान करते हैं:

०१.व्यापर का समुदाय

02.व्यापर उपकरण और संसाधन

03. “इथेरियम बुक ”वीपर पर पेज

04.अध्ययन: “स्केल पर लालची, प्रोडिगल और आत्मघाती अनुबंध ढूँढना”

05.“स्टेप-बाय-स्टेप गाइड: एथेरियम मिस्ट वॉलेट के साथ शुरुआत करना”

07.परीक्षण और तैनाती विप्र संविदा

08. “सॉलिडिटी के साथ अपना पहला एथेरम स्मार्ट कॉन्ट्रैक्ट बनाएं – ट्यूटोरियल ” [व्यपर को फिट करने के कदमों को सामान्य बनाना काफी सरल है]

वर्पर के विकास के चरण १.० संस्करण इंटरफेस पर ध्यान केंद्रित करते हैं (साथ ही आंतरिक और बाहरी कॉल में सुधार, दूसरों के बीच), जो बाधाओं को परिभाषित करते हैं ताकि आप उस इंटरफ़ेस को लागू करने वाली किसी भी वस्तु के साथ संवाद कर सकें। इंटरफेस स्मार्ट कॉन्ट्रैक्ट को अपग्रेड करने के लिए वैकल्पिक समाधान सक्षम करते हैं, इसलिए वे बुनियादी कार्यों के लिए आवश्यक नहीं हैं, और आप व्यर्थ में कोडिंग शुरू कर सकते हैं, हालांकि भाषा अधूरी है.

संस्करण 1.0 के विकास का रोडमैप, व्यापर के गटर से पुनर्प्राप्त और संपादित किया गया:

01.Two प्रकार की फाइलें: इंटरफेस (प्रति फ़ाइल एक इंटरफेस) और अनुबंध (एक अनुबंध)

प्रति फ़ाइल).

02. आप इंटरफ़ेस फ़ाइल में ERC721Metadata जैसे इंटरफ़ेस को परिभाषित कर सकते हैं

एक अनुबंध फ़ाइल.

03. इंटरफ़ेस फ़ाइल Ethereum ABI के साथ एक-से-एक पूरी तरह से संगत है.

04. सॉलिडिटी से वाइपर इंटरफेस में एक अनुवादक लिखें.

05. सभी अंतिम ईआरसी इंटरफेस की एक लाइब्रेरी बनाएं, भले ही आपको मैन्युअल रूप से बनाना पड़े

उन्हें.

06.Im इंटरफ़ेस इंटरफ़ेस फ़ाइलों से अनुबंधों के लिए इंटरफ़ेस.

07. एक इंटरफ़ेस एक प्रकार है जो एक पते को सजाता है.

08. इंटरफेस अन्य इंटरफेस को इनहेरिट कर सकते हैं.

09. ERC-165 से इंटरफ़ेस आईडी का सावधानीपूर्वक अध्ययन करें और दिए गए उदाहरणों को पुन: उत्पन्न करें

ईआरसी -721 का संबंध इस बात से है कि इंटरफेस अन्य इंटरफेस को कैसे इनहेरिट करते हैं.

10. इंटरफेस में वैकल्पिक कार्य हो सकते हैं। (सॉलिडिटी से एक ब्रेक)

11. अनुबंध इंटरफेस को लागू कर सकते हैं.

12. एक अनुबंध जो एक इंटरफ़ेस को लागू करता है लेकिन एक आवश्यक को लागू नहीं करता है

फ़ंक्शन एक त्रुटि है.

13. एक अनुबंध जो एक इंटरफ़ेस को लागू करता है लेकिन एक वैकल्पिक लागू नहीं करता है

फ़ंक्शन न तो एक ERROR है और न ही एक चेतावनी.

14. एकलता से मेल करने के लिए @public से @external का नाम बदलें.

15. एक नए फंक्शन डेकोरेटर @ इन्टर्न का परिचय दें जो एक फंक्शन को कॉल करने की अनुमति देता है

के भीतर.

16. वर्तमान में बाहरी कॉल के लिए उपयोग किए जाने वाले फ़ंक्शन कॉल सिंटैक्स को पुन: प्रस्तुत करें (हटाए गए)

चरण 14) लेकिन क्या यह आंतरिक कॉल पर लागू होता है.

17. बाहरी कॉल को इस तरह लागू करें: बाहरी कूद कॉल टेबल -> LOADCALLDATA

खोलना -> स्टैक में फ़ंक्शन पैरामीटर जोड़ें -> आंतरिक फ़ंक्शन को कॉल करें -> कार्य करते हैं

सामग्री.

18. इस तरह आंतरिक कॉल को लागू करें: स्टैक में फ़ंक्शन पैरामीटर जोड़ें -> आंतरिक कॉल करें

समारोह -> फ़ंक्शन सामान करें.

जैसा कि आप हमारे द्वारा लिखे गए कोड से देख सकते हैं, व्य्पर अपने विकास में बड़ी प्रगति कर रहा है, और 1.0 जारी होने तक बस कुछ प्रमुख अपडेट (ऊपर छोटे चरणों में टूट गया) है!

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me
Like this post? Please share to your friends:
map