ipairs() を使ったイテレーション
CoddyのLuaジャーニー「Logic & Flow」セクションの一部 — レッスン 2/54。
pairs() はどのようなテーブル構造でも動作しますが、Luaはリスト形式のテーブル専用に設計された ipairs() という特化した関数を提供しています。この関数は、インデックス1から開始し、nil 値に遭遇するまで、テーブルを順序通りに反復処理します。
ipairs() の構文は pairs() と似ています:
for index, value in ipairs(myList) do
-- ここで index と value を使用します
endクエストアイテムのリストの例を以下に示します:
local questItems = {"Map", "Compass", "Torch", "Rope"}
for i, item in ipairs(questItems) do
print(i .. ". " .. item)
end出力:
1. Map
2. Compass
3. Torch
4. Ropepairs()との主な違いは、ipairs()はnil値を見つけると、その後にさらに要素がある場合でも、すぐに停止するということです。
チャレンジ
簡単tasksテーブルを受け取り、すべてのタスクをその位置番号とともにリストした、フォーマット済みの文字列を返す関数listTasksを作成してください。
ipairs()を使用してタスクを順番に反復処理し、各行にタスク番号、続いてタスク名をnumber. taskの形式で表示する文字列を構築してください。各タスクは個別の行に記述する必要があります。
引数:
tasks(テーブル): タスク名を文字列として格納しているリスト形式のテーブル
戻り値: 各タスクが個別の行に番号付けされた文字列。形式:
1. task1
2. task2
3. task3チートシート
ipairs() は、インデックス 1 から始まり、最初の nil 値で停止する、リスト形式のテーブルを順次反復処理します:
for index, value in ipairs(myList) do
-- ここで index と value を使用します
end例:
local questItems = {"Map", "Compass", "Torch", "Rope"}
for i, item in ipairs(questItems) do
print(i .. ". " .. item)
end
-- 出力:
-- 1. Map
-- 2. Compass
-- 3. Torch
-- 4. Rope主な違い: pairs() とは異なり、ipairs() は nil 値に遭遇すると、その後にさらに要素が存在する場合でも、すぐに停止します。
自分で試してみよう
function listTasks(tasks)
-- ここにコードを書いてください
end
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。