ホーム > Lua > Luaの配列展開

Luaの配列展開

2009 年 6 月 2 日

前回call_user_func関数の実装を行いました。

かなり便利になったのですが、すぐに1点の曇りが見つかりました。

そう、call_user_funcの場合、引数は直接指定しないといけないのです。

この手の関数を使う場面では、引数もあらかじめ配列に格納しておき、呼び出すことが多いのです。

例えば、以下のような関数が定義されていたとします。

function funcA(a,b,c)
        print(a,b,c)
end

これを普通に呼び出すのは簡単

funcA("a", "b", "c")

実行結果
a	b	c

しかし、とあるケースではこの引数を配列にしておきたいときがあります。

args = {"a", "b", "c"}

さて、funcAをどう呼び出すのか?

funcA(args)

実行結果
table: 0x806f168	nil	nil

当然ですが、第1引数にテーブルの参照が渡っているのです。

お察しのよろしい方は、タイトルでピンとくるでしょう。

そう、unpack関数があるのです。

funcA(unpack(args))

実行結果
a	b	c

あっという間に解決しました。

admin Lua

コメントは受け付けていません。