यह पृष्ठभूमि की जानकारी के साथ एक पूरक उत्तर है।
लुआ पहचानकर्ता वैश्विक चर, स्थानीय चर, पैरामीटर और तालिका फ़ील्ड के लिए उपयोग किए जाते हैं। वे किसी भी प्रकार का मूल्य रखते हैं।
लुआ फ़ंक्शन मूल्य हैं। लूआ फ़ंक्शन सभी अज्ञात हैं, भले ही उन्हें परिभाषित करने के लिए उपयोग किए गए वाक्यविन्यास पर ध्यान दिए बिना।
function f()
--...
end
एक लुआ स्टेटमेंट है जो फ़ंक्शन परिभाषा और एक चर के लिए असाइनमेंट को संकलित करता है। यह हर बार एक समारोह परिभाषा निष्पादित किया जाता है
f = function()
--...
end
के लिए एक वैकल्पिक है, यह एक नया कार्य मूल्य है, जो तब किसी भी संबद्ध अभिव्यक्ति या काम में प्रयोग किया जाता है पैदा करता है।
यह स्पष्ट होना चाहिए कि न तो कथन आवश्यक रूप से एक नया चर बनाता है और न ही हमेशा एक ही मूल्य रखने की आवश्यकता होती है, न ही इसे हमेशा एक कार्य मूल्य रखने की आवश्यकता होती है। साथ ही, बनाए गए फ़ंक्शन मान को केवल एक चर द्वारा ही नहीं रखा जाना चाहिए। इसे किसी भी अन्य मूल्य की तरह कॉपी किया जा सकता है।
इसके अलावा, अन्य मूल्यों की तरह, फ़ंक्शन मान कचरा एकत्रित होते हैं। इसलिए, यदि f
में फ़ंक्शन वैल्यू था और उसे एक अलग मान दिया गया है या दायरे से बाहर चला गया है (कहें, यदि यह वैश्विक चर नहीं था), तो पिछला मान कचरा इकट्ठा होगा जब कुछ भी इसका संदर्भ नहीं देता है।
function f() end
के लिए किसी अन्य संदर्भ के बिना, हम यह मान लेगा कि f
एक वैश्विक चर रहा है। लेकिन यह जरूरी नहीं है कि मामला। यदि f
एक इन-स्कोप स्थानीय या पैरामीटर था, तो यह f
है जिसे असाइन किया जाएगा।
स्रोत
2014-06-21 10:58:41
'क्या' आवश्यक है? – Blauhirn
@ ब्लौहिरन, सख्ती से नहीं, लेकिन यह उस ब्लॉक के लिए 'पुरानी' स्थानीय की परिभाषा रखता है। – lhf