Menu
Coddy logo textTech

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. Rope

pairs()との主な違いは、ipairs()nil値を見つけると、その後にさらに要素がある場合でも、すぐに停止するということです。

challenge icon

チャレンジ

簡単

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
quiz icon腕試し

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

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