配列の場合は、table.find() という関数を使用することで、要素を検索することができましたが、辞書の場合はその機能に相当する関数がありません。そのため、for ループを使用して1つ1つ値を確認して探します。
この例では、修理を待っている船をリストする配列を使用します。ipairs() は、船の整列位置を返すために使用されます。
local shipToFind = "Void Racer"
-- 修理を待つ船
local waitingShips = {"Battle Sun", "Void Racer", "The Big Slow"}
-- 船の名前からインデックス番号を返す
local function getPlaceInLine(shipName)
for placeInLine,ship in ipairs(waitingShips) do
if ship == shipName then
return placeInLine
end
end
end
-- インデックス番号の表示
local placeInLine = getPlaceInLine(shipToFind)
print("Your place in line is " .. placeInLine)
辞書検索の例
迷子になったペットを家の中で一部屋ずつ探し回ったことがありますか? 独自のコードで、house という名前の辞書を検索して、迷子の子犬がどの部屋に飼われているかを確認する関数を作成します。
- 以下の辞書をコピーしてハウスとして機能させます。
local house = {
kitchen = "pile of Junk",
livingRoom = "kitten",
bedroom1 = "nobody there",
bedroom2 = "puppy",
}
- 辞書を検索するためのfindPet()という新しい関数を作成します。どの辞書を検索するか、どの値を検索するかのパラメータを含めます。
- 辞書を反復処理するには、pairs()を使用します。以下のソリューションで作業を確認する前に、独自のコーディングを試してください。
local function findPet(whereToSearch, searchFor)
for place, value in pairs(whereToSearch) do
end
end
- for ループが辞書を反復処理するときに、returnを使用してペットが見つかった部屋を返します。
local function findPet(whereToSearch, searchFor)
for place, value in pairs(whereToSearch) do
if value == searchFor then
return place
end
end
end
2 thoughts on “5-6 辞書から値を見つける”
コメントを残す
コメントを投稿するにはログインしてください。
こんにちは
いつも、ありがとうございます。
最後のコードのreturnの戻り値
return place
ではないでしょうか
ご指摘ありがとうございます。
return place
ですね。修正させていただきます。