テーブルの作成と unpack()
CoddyのLuaジャーニー「Logic & Flow」セクションの一部 — レッスン 6/54。
Luaは、複数の値を扱うための補完的な手法のペアを提供します:テーブル構築とtable.unpack()です。これらは、柔軟な引数処理を必要とする関数を扱う際に特に便利です。
波括弧を使用したテーブルコンストラクタ構文を使うことで、複数の値をリスト形式のテーブルに格納できます。これにより、すべての値が単一のテーブル構造にまとめられます。
local args = {10, 20, 30}
print(args[1]) -- 出力: 10
print(#args) -- 出力: 3table.unpack() 関数はその逆のことを行います。リスト形式のテーブルを受け取り、そのすべての要素を個別の値として返します。これにより、テーブルの内容を個別の引数として関数に渡すことができます。
local numbers = {5, 10, 15}
print(table.unpack(numbers)) -- 出力: 5 10 15これらのテクニックはシームレスに連携します。値をテーブルに収集し、そのテーブルを操作してから、再び個々の値にアンパック(展開)することができます。
チャレンジ
簡単3つの数値 a、b、および c を受け取り、テーブル構築と table.unpack() を使用してそれらの合計を返す関数 forwardArguments を作成してください。
{a, b, c} 構文を使用して3つの引数を含むテーブルを作成し、それらをアンパックして合計を計算する別の関数に渡します。
ロジック:
{a, b, c}を使用して、3つの引数すべてを含むテーブルを作成します- 3つのパラメータを受け取り、その合計を返す
sumという別の関数を作成します table.unpack()を使用して、テーブルの値をsum関数に渡しますsum関数からの結果を返します
パラメータ:
a(number): 1番目の数値b(number): 2番目の数値c(number): 3番目の数値
戻り値: 3つの数値の合計 (number)
チートシート
テーブルコンストラクタの構文 {a, b, c, ...} はリスト形式のテーブルを作成します。要素数を取得するには # を使用します。
local args = {10, 20, 30}
print(args[1]) -- 出力: 10
print(#args) -- 出力: 3table.unpack() はリスト形式のテーブルを受け取り、そのすべての要素を個別の値として返します。これにより、テーブルの内容を関数の個別の引数として渡すことができます。
local numbers = {5, 10, 15}
print(table.unpack(numbers)) -- 出力: 5 10 15自分で試してみよう
function forwardArguments(a, b, c)
-- 合計を計算する別の関数を作成する
-- 3つの引数すべてを含むテーブルを作成する
-- テーブルをアンパックして、値を sum 関数に渡す
end
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。