मैं अब तक जो पढ़ा है उसके आधार पर मैं एक लुआ स्विच लिखने की कोशिश कर रहा हूं, ऐसा लगता है कि यह एक टेबल का उपयोग करके हासिल किया जाता है। तो मैंने वास्तव में बेयरबोन टेबल बनाया लेकिन जब मैं इसे चलाने की कोशिश करता हूं तो मुझे यह कहते हुए एक त्रुटि मिलती है कि टेबल इंडेक्स शून्य है।
आखिरकार मैं जो चाहता हूं वह अलग-अलग इनपुट पर आधारित है, इस कोड को अलग-अलग लुआ फाइलों पर कॉल करना चाहिए। लेकिन अभी के लिए जब से मैं इस भाषा में नया हूं, मुझे लगा कि मैं उस इंडेक्स त्रुटि के नहीं होने के लिए तैयार हो जाऊंगा।
धन्यवाद
#!/usr/bin/lua
-- hello world lua program
print ("Hello World!")
io.write('Hello, where would you like to go?\n')
s = io.read()
io.write('you want to go to ',s,'\n')
--here if i input a i get error
location = {
[a] = '1',
[b] = '2',
[c] = '3',
[d] = '4',
}
location[s]()
ऊपर वह कोड है जो मुझे अब तक मिला है। नीचे त्रुटि है।
~$ lua lua_hello.lua
Hello World!
Hello, where would you like to go?
a
you want to go to a
lua: lua_hello.lua:11: table index is nil
stack traceback:
lua_hello.lua:11: in main chunk
[C]: in ?
तालिका कोड यहां इस उदाहरण पर आधारित है: Lua Tables Tutorial अनुभाग: सारणी के रूप में तालिकाएं
2 जवाब
ऐसा प्रतीत होता है कि समस्या यह है कि location[a]
, location
को इंडेक्स a
पर सेट कर रहा है, जो एक स्ट्रिंग नहीं है। जब आप अपने इनपुट में a
दर्ज करते हैं, तो इसे 'a'
के रूप में पढ़ा जाता है, जो एक स्ट्रिंग है। इंडेक्स [a]
, इंडेक्स ['a']
से अलग है। आप जो चाहते हैं वह है अपने असाइनमेंट को बदलना ताकि वे स्ट्रिंग्स (location['a'] = '1'
) को असाइन किए जा सकें।
जैसा कि Ihf ने कहा है, यदि आप आउटपुट प्रिंट करना चाहते हैं तो आपको print(location[s])
पर कॉल करने की आवश्यकता है क्योंकि location[s]
केवल स्ट्रिंग '1'
(या जो भी मान, केवल एक स्ट्रिंग के रूप में) लौटाएगा। यदि आप संख्यात्मक मान निर्दिष्ट करना चाहते हैं (गणना या आदि के लिए उपयोग करने के लिए) तो आपको location['a'] = 1
का उपयोग करना चाहिए। वैकल्पिक रूप से, मान को एक स्ट्रिंग के रूप में रखें और जब आप मान का उपयोग करने का प्रयास करते हैं, तो बस tonumber()
का उपयोग करें। उदाहरण: x = 5 * tonumber(location[s])
।
मुझे आशा है कि यह मददगार था, एक अच्छा सप्ताह है!
प्रयत्न
location = {
['a'] = '1',
['b'] = '2',
['c'] = '3',
['d'] = '4',
}
फिर वह त्रुटि दूर हो जाती है लेकिन attempt to call a string value (field '?')
द्वारा प्रतिस्थापित कर दी जाती है क्योंकि location['a']
स्ट्रिंग '1'
है।
शायद आप चाहते हैं
print(location[s])
संबंधित सवाल
नए सवाल
lua
लुआ एक शक्तिशाली, तेज, हल्की, एम्बेड करने योग्य स्क्रिप्टिंग भाषा है। यह गतिशील रूप से टाइप किया गया है, बाईटेकोड की व्याख्या करके चलाता है, और इसमें स्वचालित कचरा संग्रह है। इसकी गति मुख्य कारणों में से एक है जिसका उपयोग मशीन लर्निंग समुदाय द्वारा व्यापक रूप से किया जाता है। इसे अक्सर "एक्स्टेंसिबल एक्सटेंशन भाषा" के रूप में संदर्भित किया जाता है।