क्या लुआ में कोई कॉन्स कीवर्ड है? या कोई अन्य समान बात? क्योंकि मैं अपने चर को कॉन्स्ट के रूप में परिभाषित करना चाहता हूं और चर के मान को बदलने से रोकना चाहता हूं। अग्रिम धन्यवाद।क्या कोई ऐसा कीवर्ड है जैसे कॉन्स या कुछ और जो लुआ में इसके साथ एक ही काम करता है?
उत्तर
लुआ स्वचालित रूप से समर्थन स्थिरांक नहीं है, लेकिन आप उस कार्यक्षमता को जोड़ सकते हैं। उदाहरण के लिए अपने स्थिरांक को एक टेबल में डालकर, और तालिका को केवल मेटाटेबल का उपयोग करके पढ़ना।
तरीके से ऐसा करने के लिए है: http://andrejs-cainikovs.blogspot.se/2009/05/lua-constants.html
उलझन है कि आपके स्थिरांक के नाम केवल "ए" और "बी", लेकिन "CONSTANTS.A" और "CONSTANTS.B की तरह कुछ नहीं होगा "। आप अपने सभी स्थिरांक को एक तालिका में डालने का निर्णय ले सकते हैं, या उन्हें कई तालिकाओं में तर्कसंगत रूप से समूहित करने का निर्णय ले सकते हैं; उदाहरण के लिए गणित स्थिरांक आदि के लिए "MATH.E" और "MATH.PI"
लुआ या इसी तरह के निर्माण में कोई const
कीवर्ड नहीं है।
सबसे आसान समाधान एक टिप्पणी में एक बड़ी सावधानी लिखने के लिए, कह रही है कि यह इस चर करने के लिए लिखने के लिए मना किया है है ...
हालांकि यह तकनीकी रूप से संभव एक वैश्विक लिए लिख (या पढ़ने) ना करे के लिए है लूआ 5.2 में वैश्विक पर्यावरण _G
(या _ENV
) के लिए एक मेटाटेबल प्रदान करके परिवर्तनीय।
कुछ इस तरह:
local readonly_vars = { foo=1, bar=1, baz=1 }
setmetatable(_G, {__newindex=function(t, k, v)
assert(not readonly_vars[k], 'read only variable!')
rawset(t, k, v)
end})
तो अगर आप foo
के लिए कुछ आवंटित करने के लिए प्रयास करते हैं, एक त्रुटि फेंक दिया है।
यह कोड गलत है। यह नए चर सेट करने के खिलाफ सुरक्षा करेगा, लेकिन उन्हें बदल नहीं रहा है। – ZzZombo
जैसा कि पहले से ही देखा गया है, लुआ में const
नहीं है।
local protected = {}
function protect(key, value)
if _G[key] then
protected[key] = _G[key]
_G[key] = nil
else
protected[key] = value
end
end
local meta = {
__index = protected,
__newindex = function(tbl, key, value)
if protected[key] then
error("attempting to overwrite constant " .. tostring(key) .. " to " .. tostring(value), 2)
end
rawset(tbl, key, value)
end
}
setmetatable(_G, meta)
-- sample usage
GLOBAL_A = 10
protect("GLOBAL_A")
GLOBAL_A = 5
print(GLOBAL_A)
- 1. रीशेपर (या ऐसा कुछ)?
- 2. क्या कोई ऐसा मॉड्यूल है जो एरलांग में एक कुशल सरणी प्रकार लागू करता है?
- 3. क्या कोई phpFiddle और sqlFiddle है जो एक साथ काम करता है?
- 4. क्या कोई वेब ढांचा या प्रोजेक्ट है जो "वॉल" प्रदान करता है जैसे
- 5. एफ #: क्या इसके लिए कोई UI (जैसे WPF) नहीं है?
- 6. क्या "std :: और" या "std :: या" जैसे कुछ भी है?
- 7. क्या कोई ऐसा सीएमएस है जो Google App Engine पर चलता है जो प्लोन (कुछ मामलों में) से तुलनीय है?
- 8. क्या जावा में कोई कीवर्ड है जो सी #
- 9. क्या कोई ऐसा प्रोग्राम है जो योजना/जावा/रूबी कोड अंग्रेजी वाक्यों में अनुवाद करता है?
- 10. ReSharper (या ऐसा कुछ)?
- 11. हास्केल रिक कीवर्ड कैसे काम करता है?
- 12. क्या कोई नकली डेटा जेनरेटर है जो एंड्रॉइड के साथ काम करता है?
- 13. क्या कोई ऐसा करने का कोई तरीका है जब पर्ल थ्रेड अपना काम पूरा करता है?
- 14. क्या कोई सीएलआर प्रोफाइलर है जो .NET 3.5 SP1 और WPF के साथ काम करता है?
- 15. वर्चस्क्रिप्ट में वर्चुअल कीवर्ड क्या करता है?
- 16. क्या कोई ऐसा फ़ंक्शन लिख सकता है जो एक प्रकार लेता है और एक अलग प्रकार
- 17. सी # कक्षा एक ही समय में IENumerable और एक IENumerator है। इसके साथ क्या मुद्दे हैं?
- 18. jquery कैसे काम करता है? एनिमेट के साथ ऐसा करना()
- 19. ग्लोबल लुआ स्थानीय क्यों काम करता है?
- 20. सी ++ कैसे एक कॉन्स डबल संभालता है और जो एक int को संदर्भित करता है?
- 21. ऐसा क्यों करता है जो यह करता है?
- 22. एसक्यूएल में "साथ" कीवर्ड कैसे काम करता है?
- 23. क्या mysqldump --password वास्तव में ऐसा करता है जो यह कहता है?
- 24. क्या 'उम्मीद' या अपेक्षित लाइब्रेरी का कार्यान्वयन है जो Python3 में काम करता है?
- 25. टॉमकैट में टीएलएस हैंडशेक घटना, क्या ऐसा कुछ है?
- 26. लूप में कोई फ़ंक्शन कैसे करता है (जो कोई अन्य फ़ंक्शन देता है) काम करता है?
- 27. सर्विसस्टैक.net जावा के बराबर (या ऐसा कुछ जो सर्विसस्टैक के साथ इंटरैक्ट कर सकता है)?
- 28. कीवर्ड 'पैराम्स' वास्तव में कितना कीवर्ड काम करता है?
- 29. सी: क्या इनलाइन कीवर्ड इसके लायक है?
- 30. , स्काइप जैसे प्रोग्राम कैसे काम करता है?
भी http://lua-users.org/wiki/ReadOnlyTables देखें:
आप रक्षित 'विश्व स्तर पर निर्धारित वेरिएबल (संरक्षित तालिकाओं की तुलना में) करने के लिए इस छोटे से तरीके का उपयोग कर सकते हैं। और ध्यान दें कि आप ग्लोबल स्थिरांक (प्रदर्शन में कुछ लागत पर) अनुकरण करने के लिए केवल पढ़ने के लिए '_ENV' और/या '_G' सेट कर सकते हैं। – finnw
यह @finnw द्वारा पोस्ट किए गए लिंक से एक बहुत ही महत्वपूर्ण नोट जैसा लगता है:" इसके अलावा, केवल पढ़ने योग्य टेबल बनाने की यह विधि ** जोड़े, आईपीएयर, अगली, # ऑपरेटर **, और तालिका पुनरावृत्ति के अन्य रूपों में हस्तक्षेप करती है। " – chris