Question

fonctions Lua peuvent retourner plusieurs résultats:

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

Si je ne suis pas intéressé par la troisième valeur de retour, je peux choisir de l'ignorer lors de l'appel de la fonction:

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

Y at-il une manière similaire à ignorer les premiers éléments X lorsque vous appelez la fonction?

Je pourrais écrire ce code si je ne veux que la troisième valeur de retour, mais je me demandais si un code plus propre existe:

_, _, c = unpack({'one', 'two', 'three'})
Était-ce utile?

La solution

Vous pouvez utiliser la fonction select . Il retournera tous les arguments après index, où index est le premier argument donné à select.

Exemples:

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

Cela dit, je pense que dans la plupart des cas, l'écriture _,_,c = f() est plus propre. select est surtout utile lorsque le nombre d'argument ne sait pas à l'avance, ou lorsque les appels de fonction enchaînant (par exemple f(select(2, g())))

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top