ipairs() を使ったイテレーション
CoddyのLuaジャーニー「ロジックと制御フロー」セクションの一部。レッスン 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値を見つけると、その後にさらに要素があっても直ちに停止することです。
チャレンジ
簡単listTasks関数を作成してください。この関数はtasksテーブルを受け取り、すべてのtaskを位置番号付きで一覧表示する整形済みの文字列を返します。
ipairs()を使用してtasksを順番に反復処理し、各行にtask番号、その後にtask名をnumber. taskの形式で示す文字列を作成してください。各taskは別々の行に配置します。
パラメーター:
tasks(table): task名を文字列として含むリスト形式のテーブル
戻り値: 各taskを別々の行に番号付きで示す文字列。形式:
1. task1
2. task2
3. task3自分で試してみよう
function listTasks(tasks)
-- ここにコードを書いてください
end
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックと制御フローのすべてのレッスン
自分で練習してみよう: Luaオンラインコンパイラ