मैं एक मैपिंग मान isUsed को isValid if-else स्टेटमेंट में संशोधित करना चाहता हूं और यदि अन्य पर आधारित बूलियन मान लौटाता हूं

मैंने फंक्शन डिक्लेरेशन में व्यू कीवर्ड को शामिल करने की कोशिश की, लेकिन इसके परिणामस्वरूप अनछुए परिणाम मिले

function createVoucher(string val )public
   { var stud= VKey[val];
     isKey[val]=true;
     stud.key=val;
     stud.count=1 }

function isValid(string  val)public  view returns(bool){
    if(isKey[val] && isUsed[val]==false)
    {var stud=VKey[val];
     isKey[val]=false;
     stud.count=stud.count--;
     isUsed[val]=true;
    return  true;}

    else return false  }}

`

मुझे उम्मीद थी कि एक बनाया गया वाउचर isValid () की पहली कॉल पर सही होगा और बाद की कॉलों पर गलत होगा

0
Zlatan 12 जून 2019, 17:36

1 उत्तर

सबसे बढ़िया उत्तर

isValid को view फ़ंक्शन के रूप में घोषित किया गया है, इसलिए जब आप इसे कॉल करते हैं, तो कोड को केवल एक नोड पर स्थानीय रूप से निष्पादित किया जाता है और ब्लॉकचेन में कोई लेनदेन नहीं जोड़ा जाता है। इसका मतलब है कि यह किसी भी राज्य को बदल नहीं सकता है।

यदि आप चाहते हैं कि आपका फ़ंक्शन संग्रहण मानों को परिवर्तित करे, तो आपको view संशोधक को निकालना होगा। लेकिन ध्यान दें कि लेन-देन में वापसी मान नहीं होते, इसलिए अब आप बूलियन मान को बाहर नहीं निकाल पाएंगे। इसके बजाय आप isUsed की जांच करने के लिए किसी ईवेंट को छोड़ना या किसी अलग फ़ंक्शन का उपयोग करना चाह सकते हैं।

0
user94559 12 जून 2019, 20:23