Come posso ignorare i primi risultati di una funzione in Lua?
-
02-10-2019 - |
Domanda
Funzioni Lua possono restituire più risultati:
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'})
C'è un modo simile a ignorare i primi elementi di 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'})
Soluzione
È possibile utilizzare la href="http://www.lua.org/manual/5.1/manual.html#pdf-select" rel="noreferrer"> select
funzione index
è il primo argomento dato 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 argomento non è noto in anticipo, o quando concatenare chiamate di funzione insieme (ad esempio f(select(2, g()))
)