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