web-dev-qa-db-ja.com

テーブルを関数の引数に「アンパック」する方法

複数の「数値」引数を受け入れるLuaの関数を呼び出そうとしています

_function addShape(x1, y1, x2, y2 ... xn, yn)
_

そして、私は引数として渡したい値のテーブルを持っています

_values = {1, 1, 2, 2, 3, 3}
_

関数呼び出しでこれらの値を動的に「アンパック」することは可能ですか(これが正しい用語かどうかはわかりません)?何かのようなもの..

_object:addShape(table.unpack(values))
_

呼び出しと同等:

_object:addShape(1, 1, 2, 2, 3, 3)
_

これが完全に明白なLua質問である場合はお詫びしますが、私はこのトピックについて何かを見つけることができません。


更新

unpack(values)も機能しません(メソッドaddShape(...)を詳しく調べて、渡された値の型を確認すると、unpackが1つのstringになることがわかります。

17
codinghands

あなたはこれを求めている:

object:addShape(unpack(values))

参照: http://www.lua.org/pil/5.1.html

以下は完全な例です。

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