Lua文法小贴士(十三)可変パラメータとunpack
Luaは可変パラメータをサポートし、...に表示されます.
例:
もちろん前に固定パラメータを追加することもできます
カッコで...パッケージ化してtableにします.たとえば、次のようにします.
呼び出し:
またLuaではunpack関数を用いて配列形式のtableを取り外すことができる.
例:
この関数には3つのパラメータがあり、1つ目のパラメータは分解するtableで、2つ目のパラメータは開始要素の下付き文字で、デフォルトは1で、3つ目のパラメータは終了要素の下付き文字で、デフォルトはtableの長さです.
取り外した要素を上のfuncのパラメータとして使用できます.
最後に、Luaの関数は、次のような複数の戻り値を返すことができることを知っています.
unpackは、複数の戻り値を提供するためにテールコールとして使用することができる.
また、戻り値はカッコでパッケージ化することもできます.たとえば、次のようになります.
例:
local function func(...)
print(...)
end
もちろん前に固定パラメータを追加することもできます
local function funca(a,...)
--TODO:
end
カッコで...パッケージ化してtableにします.たとえば、次のようにします.
local function func(...)
print(...)
local tbl = {...}
print(#tbl)
end
呼び出し:
func(1,2,3,4)
またLuaではunpack関数を用いて配列形式のtableを取り外すことができる.
例:
local tbl = {2,4,6,8}
local a,b,c,d = unpack(tbl)
この関数には3つのパラメータがあり、1つ目のパラメータは分解するtableで、2つ目のパラメータは開始要素の下付き文字で、デフォルトは1で、3つ目のパラメータは終了要素の下付き文字で、デフォルトはtableの長さです.
取り外した要素を上のfuncのパラメータとして使用できます.
func(unpack(tbl))
最後に、Luaの関数は、次のような複数の戻り値を返すことができることを知っています.
local function funcpp(a)
return a, a + 1, a + 2
end
unpackは、複数の戻り値を提供するためにテールコールとして使用することができる.
また、戻り値はカッコでパッケージ化することもできます.たとえば、次のようになります.
print(#{funcpp(4)})