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() 関数は、文字列、数値、さらには他のテーブルなど、あらゆるキーの型で使用できます。
チャレンジ
簡単inventory テーブルを受け取り、すべてのアイテムとその数量をリストしたフォーマット済みの文字列を返す関数 printInventory を作成してください。
pairs() を使用して inventory テーブルを反復処理し、各行にアイテム名とその数量を item: quantity の形式で表示する文字列を構築します。各アイテムは個別の行に表示する必要があります。
各アイテムを独自の行に配置するには、エントリ間に改行文字 "\n" を使用します。例えば、"apple: 5\nbanana: 3" は2つの別々の行として表示されます。最初のアイテムの前に "\n" を追加しないように注意してください。アイテムの間にのみ追加します。
パラメータ:
inventory(table): キーがアイテム名 (文字列) で、値が数量 (数値) である辞書形式のテーブル
戻り値: 各アイテムと数量が "\n" で区切られ、個別の行に記載された文字列。{apple=5, banana=3} に対する出力例:apple: 5banana: 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)
endpairs()関数は、文字列、数値、さらには他のテーブルなど、あらゆるキータイプで動作します。
自分で試してみよう
function printInventory(inventory)
-- ここにコードを記述してください
end
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。