Menu
Coddy logo textTech

pairs() を使ったイテレーション

CoddyのLuaジャーニー「Logic & Flow」セクションの一部 — レッスン 1/54。

Luaで辞書形式のテーブルを扱う際、内部に格納されているすべてのキーと値のペアにアクセスする必要があることがよくあります。pairs() 関数を使用すると、キーの型に関係なく、テーブル内のすべてのエントリをループ処理できるようになり、これが可能になります。

for ループで pairs() を使用する構文は次のようになります:

for key, value in pairs(myTable) do
    -- ここで key と value を使用します
end

ループの各反復において、pairs() はキーとその対応する値の両方を提供します。これにより、両方の情報を同時に取得して操作することができます。

プレイヤーのインベントリを使用した実用的な例を次に示します:

local inventory = {
    sword = 1,
    potion = 5,
    gold = 150
}

for item, quantity in pairs(inventory) do
    print(item .. ": " .. quantity)
end

このコードは、各アイテムの名前とその数量を表示します。pairs() 関数は、文字列、数値、さらには他のテーブルなど、あらゆるキーの型で使用できます。

challenge icon

チャレンジ

簡単

inventory テーブルを受け取り、すべてのアイテムとその数量をリストしたフォーマット済みの文字列を返す関数 printInventory を作成してください。

pairs() を使用して inventory テーブルを反復処理し、各行にアイテム名とその数量を item: quantity の形式で表示する文字列を構築します。各アイテムは個別の行に表示する必要があります。

各アイテムを独自の行に配置するには、エントリ間に改行文字 "\n" を使用します。例えば、"apple: 5\nbanana: 3" は2つの別々の行として表示されます。最初のアイテムの前に "\n" を追加しないように注意してください。アイテムの間にのみ追加します。

パラメータ:

  • inventory (table): キーがアイテム名 (文字列) で、値が数量 (数値) である辞書形式のテーブル

戻り値: 各アイテムと数量が "\n" で区切られ、個別の行に記載された文字列。{apple=5, banana=3} に対する出力例:
apple: 5
banana: 3

チートシート

pairs()関数を使用すると、辞書形式のテーブル内のすべてのキーと値のペアをループ処理できます:

for key, value in pairs(myTable) do
    -- ここでkeyとvalueを使用します
end

各反復中に、pairs()はキーとその対応する値の両方を提供するため、両方の情報に同時にアクセスできます。

インベントリテーブルを使用した例:

local inventory = {
    sword = 1,
    potion = 5,
    gold = 150
}

for item, quantity in pairs(inventory) do
    print(item .. ": " .. quantity)
end

pairs()関数は、文字列、数値、さらには他のテーブルなど、あらゆるキータイプで動作します。

自分で試してみよう

function printInventory(inventory)
    -- ここにコードを記述してください
end
quiz icon腕試し

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

Logic & Flowのすべてのレッスン