2010-07-02 6 views
12

लुआ कार्यों से अधिक परिणाम लौट सकते हैं:लुआ में किसी फ़ंक्शन से पहले परिणाम कैसे अनदेखा कर सकता हूं?

a, b, c = unpack({'one', 'two', 'three'}) 

अगर मैं तीसरे वापसी मान में कोई दिलचस्पी नहीं हूँ, मैं जब समारोह बुला इसे अनदेखा करने के लिए चुन सकते हैं:

a, b = unpack({'one', 'two', 'three'}) 

वहां भी इसी तरह है फ़ंक्शन को कॉल करते समय एक्स को पहले तत्वों को अनदेखा करने का तरीका?

मैं अगर मैं केवल तीसरी वापसी मान चाहते हैं तो इस कोड लिख सकता है, लेकिन अगर एक क्लीनर कोड मौजूद है मैं सोच रहा था:

_, _, c = unpack({'one', 'two', 'three'}) 

उत्तर

13

आप select फ़ंक्शन का उपयोग कर सकते हैं। यह index के बाद सभी तर्क वापस कर देगा, जहां indexselect को दिया गया पहला तर्क है।

उदाहरण:

c = select(3, unpack({'one', 'two', 'three'})) 
b, c = select(2, unpack({'one', 'two', 'three'})) 
b = select(2, unpack({'one', 'two', 'three'})) --discard last return value 

यही कहा, मैं ज्यादातर मामलों में लगता है, लेखन _,_,c = f() क्लीनर है। select अधिकतर उपयोगी होता है जब तर्क संख्या अग्रिम में ज्ञात नहीं होती है, या जब चेनिंग चेन एक साथ कॉल करता है (उदा। f(select(2, g())))

+0

बिल्कुल जो मैं ढूंढ रहा था, धन्यवाद! –

संबंधित मुद्दे

 संबंधित मुद्दे