के लिए वेरिएबल्स और स्कोप प्रश्न घोषित करना मैं Bitfighter के लिए अग्रणी देव हूं, और हम लुआ को एक स्क्रिप्टिंग भाषा के रूप में उपयोग कर रहे हैं ताकि खिलाड़ियों को अपने स्वयं के कस्टम रोबोट जहाजों को प्रोग्राम करने की अनुमति मिल सके।लुआ
लुआ में, आपको वैरिएबल घोषित करने की आवश्यकता नहीं है, और सभी चर वैश्विक स्तर पर डिफ़ॉल्ट हैं, अन्यथा घोषित किए जाने तक। इससे कुछ समस्याएं होती हैं। निम्नलिखित स्निपेट, उदाहरण के लिए ले लो: इस स्निपेट में
loc = bot:getLoc()
items = bot:findItems(ShipType) -- Find a Ship
minDist = 999999
found = false
for indx, item in ipairs(items) do
local d = loc:distSquared(item:getLoc())
if(d < minDist) then
closestItem = item
minDist = d
end
end
if(closestItem != nil) then
firingAngle = getFiringSolution(closestItem)
end
, अगर findItems() कोई उम्मीदवारों देता है, तो closestItem अभी भी जो कुछ भी जहाज पिछली बार के आसपास पाया करने के लिए और, संदर्भित करेंगे, बीच समय में है कि जहाज मारा जा सकता था। यदि जहाज मारे गए हैं, तो यह अब मौजूद नहीं है, और getFiringSolution() विफल हो जाएगा।
क्या आपने समस्या को देखा? खैर, न ही मेरे उपयोगकर्ता। यह सूक्ष्म है, लेकिन नाटकीय प्रभाव के साथ।
एक समाधान की आवश्यकता होगी कि सभी चर घोषित किए जाएंगे, और सभी चर के लिए स्थानीय दायरे में डिफ़ॉल्ट रूप से। हालांकि उस परिवर्तन से प्रोग्रामर के लिए ऐसी वस्तुओं का उल्लेख करना असंभव नहीं होगा जो अब मौजूद नहीं हैं, इससे अनजाने में ऐसा करना मुश्किल हो जाएगा।
क्या लुआ को स्थानीय वर्प में सभी वर्रों को डिफ़ॉल्ट रूप से बताने का कोई तरीका है, और/या यह घोषित करने की आवश्यकता है कि उन्हें घोषित किया जाए? मुझे कुछ अन्य भाषाओं (जैसे पर्ल) पता है कि यह विकल्प उपलब्ध है।
धन्यवाद!
यहां बहुत सारे अच्छे उत्तर, धन्यवाद!
मैंने लुआ 'सख्त' मॉड्यूल के थोड़ा संशोधित संस्करण के साथ जाने का फैसला किया है। ऐसा लगता है कि मैं कहां जाना चाहता हूं, और मैं संदेशों को बेहतर बनाने के लिए थोड़ा सा हैक कर दूंगा और उन्हें अपने विशेष संदर्भ के लिए और अधिक उचित बना दूंगा।
बीटीडब्ल्यू, क्या आपके पास बयान के अंदर अतिरिक्त ब्रेसिज़ डालने का कोई अच्छा कारण है? –
ठीक है, इससे पहले कि आप सवाल उठाएंगे, मैंने जवाब दिया होगा कि उन्हें आवश्यक था। लेकिन अब मुझे जवाब देना है कि माता-पिता को छोड़कर मुझे गलत लगता है! – Watusimoto
यह निश्चित रूप से व्यक्तिगत पसंद है। लेकिन यह याद रखना महत्वपूर्ण है कि लुआ सी या पास्कल या जो कुछ भी नहीं है। लुआ लुआ है और इसे प्रभावी ढंग से उपयोग करने के लिए आपको इसका उपयोग करना चाहिए, ऐसा नहीं है कि यह अन्य प्रोग्रामिंग भाषा के लिए कुछ खराब विकल्प है। मैंने पाया है कि इस तरह का "वाक्यविन्यास गलत दिखता है" चीजें लुआ को मेरे दिमाग के हिस्से में सी ++ और अन्य भाषाओं से अलग रखने में मदद करती हैं। संक्षेप में, मेरी राय है: यदि यह लुआ में लिखा गया है, तो इसे लुआ रास्ते में लिखें! :-) –