मेरे पास एक लुआ फ़ंक्शन है जो एकाधिक पैरामीटर लेता है और पैरामीटर के रूप में कई मान देता है। प्रत्येक वापसी मूल्य पैरामीटर से मेल खाता है। इसे समझने के लिए एक समारोह है जो एक डेटाबेस से एक मुख्य/मान जोड़े के लिए मूल्य पढ़ता है पर विचार करें:एकाधिक मूल्यों को लौटाने वाले लुआ फ़ंक्शन से त्रुटि लौटने के लिए सर्वोत्तम अभ्यास
val1, val2, val3 = my_function("key1", "key2", "key3");
val1 = my_function("key1");
my_function
से एक त्रुटि वापस जाने के लिए सबसे अच्छा तरीका क्या है? (उदाहरण के लिए यदि एक आपूर्ति की गई "कुंजी" अमान्य है)
मैं समझता हूं कि एक तरफ त्रुटि पर दो मान वापस लौटना है, nil
और एक त्रुटि स्ट्रिंग। क्या यह सबसे अच्छा तरीका है?
val1, val2, val3 = my_function("key1", "key2", "key3");
if val1 then
-- Use val1, val2, and val3.
else
print("ERROR: " .. val2);
end
संपादित
कुछ अतिरिक्त बिंदु: उदाहरण के लिए:
- lua स्क्रिप्ट
lua_pcall()
का उपयोग कर एक सी कार्यक्रम के भीतर से मार डाला जा रहा है। - स्क्रिप्ट विफल होने पर सी प्रोग्राम निरस्त नहीं होना चाहिए।
my_function()
सी- में लागू किया जाता है तो
my_function()
में विफल रहता है, यह भी एक त्रुटि कोड (या संदेश) कारण यह विफल रहा है का संकेत देना चाहिए।
मैंने कुछ बिंदुओं को स्पष्ट करने के लिए प्रश्न संपादित किया है। चूंकि लुआ स्क्रिप्ट (जो अंततः 'my_function() 'को कॉल करती है, सी से' lua_pcall() 'के साथ चलायी जाती है, क्या आपके ऊपर वर्णित' my_function() 'एक" ठीक "चर होना चाहिए? (उदा। 'ठीक है, val1, val2, val3 = my_function() ')। – Ben
@ बेन, हाँ, मैं एक अतिरिक्त 'ठीक' मान शामिल करूंगा - जो कि सबसे साफ तरीका प्रतीत होता है। मैं डिजाइन में संशोधन की भी सिफारिश करता हूं; चूंकि दोनों कार्य सी में हैं, इसलिए यह संभवतः लुआ के बारे में भूलने के लिए सरल (और तेज़) होने जा रहा है और सी – kikito
@ किक्टो में बस सबकुछ कर रहा है, स्पष्टीकरण के लिए धन्यवाद। इस मामले में यह निश्चित रूप से उत्पाद को विस्तारित करने के लिए लुआ (या समकक्ष) का उपयोग करने के लिए समझ में आता है। – Ben