テーブルの作成と unpack()
CoddyのLuaジャーニー「ロジックと制御フロー」セクションの一部。レッスン 6/54。
Lua には、複数の値を扱うための相補的な 2 つのテクニックがあります。table construction と これらのテクニックはシームレスに連携します。values を table に集め、table を操作してから、個々の values に unpack できます。
unpack() です。これらは、柔軟な引数処理を必要とする関数を扱う際に特に役立ちます。中かっこを使ったテーブルコンストラクター構文で、複数の値をリスト形式のテーブルにまとめて格納できます。これにより、すべての値が単一のテーブル構造にまとめられます。local args = {10, 20, 30}
print(args[1]) -- 出力: 10
print(#args) -- 出力: 3unpack() function は逆の動作をします。リスト形式の table を受け取り、all の要素を separate values として返します。これにより、table の内容を個別の arguments として function に pass できます。重要: 新しいバージョンの Lua(5.2 以降)ではこの関数が table.unpack() に移動されていますが、この環境では Lua 5.1 が実行されるため、グローバルな unpack() 関数を使用する必要があります。local numbers = {5, 10, 15}
print(unpack(numbers)) -- 出力: 5 10 15チャレンジ
簡単forwardArguments function を記述してください。three numbers a、b、c を受け取り、table construction と unpack() を使用してそれらの合計を返します。
三つの引数を含む table を {a, b, c} 構文で Create し、その後それらを unpack して、合計を calculates another function に渡してください。
注: この環境との互換性を確保するため、table.unpack() ではなく global unpack() function を使用してください。
Logic:
{a, b, c}を使用して、all three arguments を含む table を Create するsumという separate function を Create する。その function は three parameters を受け取り、それらの合計を return するunpack()を使用して table の values をsumfunction に pass するsumfunction から result を return する
Parameters:
a(number): First numberb(number): Second numberc(number): Third number
Returns: all three numbers の sum (number)
自分で試してみよう
function forwardArguments(a, b, c)
-- 合計を計算する別の関数を作成する
-- 3つの引数すべてを含むテーブルを作成する
-- テーブルを展開して合計関数に値を渡す
-- ヒント: グローバルな 'unpack' 関数を使ってテーブル引数を展開する
endこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックと制御フローのすべてのレッスン
自分で練習してみよう: Luaオンラインコンパイラ