2010-07-02 8 views
12

funzioni Lua possono restituire più risultati:Come posso ignorare i primi risultati di una funzione in Lua?

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

Se non mi interessa nel terzo valore di ritorno, posso scegliere di ignorarlo quando si chiama la funzione:

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

v'è una simile modo di ignorare i primi elementi X quando si chiama la funzione?

ho potuto scrivere questo codice, se voglio solo il terzo valore di ritorno, ma mi chiedevo se esiste un codice più pulito:

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

risposta

13

È possibile utilizzare la funzione select. Restituirà tutti gli argomenti dopo index, dove index è il primo argomento assegnato a select.

Esempi:

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 

Detto questo, penso che nella maggior parte dei casi, la scrittura _,_,c = f() è più pulita. select è utile soprattutto quando il numero dell'argomento non è noto in anticipo o quando si concatenano chiamate di funzioni insieme (ad esempio f(select(2, g())))

+0

Esattamente quello che stavo cercando, grazie! –

Problemi correlati