Menu
Coddy logo textTech

テーブルの作成と unpack()

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

Luaは複数の値を扱うための相補的なテクニックのペアを提供しています: テーブル構築unpack() です。これらは、柔軟な引数処理を必要とする関数を扱う際に特に便利です。波括弧を使用したテーブルコンストラクタ構文を使うと、複数の値をリスト形式のテーブルに格納できます。これにより、すべての値が1つのテーブル構造にまとめられます。
local args = {10, 20, 30}
print(args[1])  -- 出力: 10
print(#args)    -- 出力: 3
unpack() 関数はその逆を行います。リスト形式のテーブルを受け取り、そのすべての要素を個別の値として返します。これにより、テーブルの内容を個々の引数(arguments)として関数に渡すことができるようになります。重要: Luaの新しいバージョン(5.2以降)ではこの関数はtable.unpack()に移動されましたが、この環境はLua 5.1で動作しているため、globalunpack()関数を使用する必要があります。
local numbers = {5, 10, 15}
print(unpack(numbers))  -- 出力: 5    10    15
これらのテクニックはシームレスに連携して機能します。値を`table`にまとめ、その`table`を操作し、再び個々の値に`unpack`することができます。
challenge icon

チャレンジ

簡単

3つの数値 ab、および 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
quiz icon腕試し

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

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