web-dev-qa-db-fra.com

Comment «décompresser» la table en arguments de fonction

J'essaie d'appeler une fonction dans Lua qui accepte plusieurs arguments "nombre"

function addShape(x1, y1, x2, y2 ... xn, yn)

et j'ai une table de valeurs que je voudrais passer comme arguments

values = {1, 1, 2, 2, 3, 3}

Est-il possible de "décompresser" dynamiquement (je ne sais pas si c'est le bon terme) ces valeurs dans l'appel de fonction? Quelque chose comme..

object:addShape(table.unpack(values))

Équivaut à appeler:

object:addShape(1, 1, 2, 2, 3, 3)

Toutes mes excuses si c'est une question de Lua tout à fait évidente, mais je ne trouve rien pour la vie de moi sur le sujet.


METTRE À JOUR

unpack(values) ne fonctionne pas non plus (plonger dans la méthode addShape(...) et vérifier le type de la valeur passée révèle que unpack résulte en un seul string .

17
codinghands

Tu veux ça:

object:addShape(unpack(values))

Voir aussi: http://www.lua.org/pil/5.1.html

Voici un exemple complet:

shape = {
  addShape = function(self, a, b, c)
    print(a)
    print(b)
    print(c)
  end
}

values = {1, 2, 3}
shape:addShape(unpack(values))
25
John Zwinck