Menu
Coddy logo textTech

テーブルの作成と unpack()

CoddyのLuaジャーニー「ロジックと制御フロー」セクションの一部。レッスン 6/54。

Lua には、複数の値を扱うための相補的な 2 つのテクニックがあります。table constructionunpack() です。これらは、柔軟な引数処理を必要とする関数を扱う際に特に役立ちます。中かっこを使ったテーブルコンストラクター構文で、複数の値をリスト形式のテーブルにまとめて格納できます。これにより、すべての値が単一のテーブル構造にまとめられます。
local args = {10, 20, 30}
print(args[1])  -- 出力: 10
print(#args)    -- 出力: 3
unpack() 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
これらのテクニックはシームレスに連携します。values を table に集め、table を操作してから、個々の values に unpack できます。
challenge icon

チャレンジ

簡単

forwardArguments function を記述してください。three numbers abc を受け取り、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 を sum function に pass する
  • sum function から result を return する

Parameters:

  • a (number): First number
  • b (number): Second number
  • c (number): Third number

Returns: all three numbers の sum (number)

自分で試してみよう

function forwardArguments(a, b, c)
    -- 合計を計算する別の関数を作成する

    -- 3つの引数すべてを含むテーブルを作成する

    -- テーブルを展開して合計関数に値を渡す
    -- ヒント: グローバルな 'unpack' 関数を使ってテーブル引数を展開する

end
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックと制御フローのすべてのレッスン

自分で練習してみよう: Luaオンラインコンパイラ