2016-02-21 5 views
8

में अजीब वापसी विवरण मैं गिटूब पर कुछ लुआ कोड ब्राउज़ कर रहा हूं जहां मुझे return Memory.value("game", "textbox") == 1 जैसे कई बयान दिखाई देते हैं।
क्या यह "बराबर" return if value ==1 या if value == 1 return true, else return false है?लुआ

उत्तर

4

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

मैं तार्किक पहलू में शामिल होने जा रहा हूं।

== एक तुलना ऑपरेटर है, यह जांच करता है कि क्या यह तर्क प्रत्येक के बराबर है। यदि ऐसा है तो यह सच हो जाता है। तो जब return में उपयोग किया जाता है, return मूल्यांकन करेगा और सही होगा यदि वे बराबर हैं।

यह == तक सीमित नहीं है, किसी भी तुलना ऑपरेटरों (~=, <=, >=, <, >) सटीक एक ही बात करेंगे।

and, or हालांकि थोड़ा अलग काम करता है। वे सच/झूठी नहीं लौटते हैं।यहाँ उनका व्यवहार है:

return a and b: यह मूल रूप से का मूल्यांकन करता है, तो एक सच है (न तो झूठी है और न ही शून्य) ख

return a or b वापसी: यह मूल रूप से तब्दील करने के लिए * अगर एक सच है (न तो झूठी है और न ही शून्य) एक वापसी, अन्यथा ख

तो तुम कल्पना कर सकता के रूप में वापसी, return a and b or c जैसा ही कुछ

if a then 
    if b then 
     return b 
    else 
     return c 
    end 
else 
    return c 
end 

तो return a and b or c, return ((a and b) or c)

और पूरा होने की खातिर के बराबर है not बस यह मूल्यांकन करता है और यह उलट है, इसलिए यदि यह बात गलत है/शून्य यह सच रिटर्न, अन्यथा गलत देता है।

9

return कथन एक अभिव्यक्ति को इसके तर्क के रूप में उम्मीद करता है। इसका मतलब है कि यदि आप return expression लिखते हैं, तो expression का मूल्यांकन मूल्य वापस किया जाना है।

इस विशिष्ट मामले में, Memory.value("game", "textbox") == 1 एक अभिव्यक्ति है कि true का मूल्यांकन करता है, तो Memory.value("game", "textbox") के रिटर्न मान 1 के बराबर होती है है। यदि Memory.value("game", "textbox")1 से भिन्न मान होना था, तो अभिव्यक्ति false का मूल्यांकन करेगी, जो कि return कथन वापस आ जाएगा।

आप आसानी से के रूप में

if (Memory.value("game", "textbox") == 1) then 
    return true 
else 
    return false 
end 

दिया बयान लिख सकता है लेकिन जब यह तार्किक अनावश्यक है, तो आप इस कोड लिखने से बचने के लिए और बदले का उपयोग एक लाइनर आपके द्वारा दी गई चाहेंगे।

5

आपका प्रश्न कहता है कि आप पर्ल को जानते हैं। नहीं, यह पर्ल की तरह नहीं है, जहां 'if' की स्थिति और समान कथन कथन का पालन कर सकते हैं।

return शून्य या अधिक वापसी मानों की एक सूची की अपेक्षा करता है। एक समारोह किसी भी लंबाई सूची वापस कर सकते हैं। इसमें कई रिटर्न स्टेटमेंट भी हो सकते हैं, और उन्हें समान लंबाई या अर्थ की सूचियों को वापस करने की आवश्यकता नहीं है। तो, फ़ंक्शन का दस्तावेज़ आवश्यक है। उदाहरण के रूप में load देखें।

यह कथन true या false देता है।

यह मूल्य तालिका के रूप में स्मृति द्वारा संदर्भित, "मूल्य" के साथ अनुक्रमित व्यवहार करता है, दो स्ट्रिंग तर्क के साथ एक समारोह के रूप परिणामस्वरूप मूल्य कॉल करता है और मान 1