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'})
È stato utile?

Soluzione

È possibile utilizzare la href="http://www.lua.org/manual/5.1/manual.html#pdf-select" rel="noreferrer"> select funzione index, dove 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())))

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top