Kembalikan nilai dari tabel

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Kebutuhan umum dalam banyak struktur data adalah untuk mengembalikan nilai.Artikel ini akan membahas pencarian tabel menggunakan pairs() atau ipairs() untuk setengah dari elemen tabel, seperti kunci atau nilai, untuk menemukan dan mengembalikan setengah lainnya.

Contoh menggunakan daftar array kapal yang menunggu untuk diperbaiki. ipairs() digunakan untuk mengembalikan tempat kapal di baris.


local shipToFind = "Void Racer"
-- Kapal menunggu perbaikan
local waitingShips = {"Battle Sun", "Void Racer", "The Big Slow"}
-- Dapatkan tempat di baris
local function getPlaceInLine(shipName)
for placeInLine, ship in ipairs(waitingShips) do
if ship == shipName then
return placeInLine
end
end
end
--Tempat cetak di baris
local placeInLine = getPlaceInLine(shipToFind)
print("Your place in line is " .. placeInLine)

Contoh pencarian kamus

Pernahkah Anda mencari hewan peliharaan yang hilang di rumah pergi kamar per kamar? Pada kode Anda sendiri fungsi untuk mencari melalui kamus bernama rumah untuk melihat kamar mana yang menyimpan anak anjing yang hilang.

  1. Salin kamus di bawah ini untuk bertindak sebagai rumah.


    local house = {
    kitchen = "pile of Junk",
    livingRoom = "kitten",
    bedroom1 = "nobody there",
    bedroom2 = "puppy",
    }
  2. Buat fungsi baru bernama findPet() untuk mencari kamus. Sertakan parameter untuk kamus mana yang akan dicari, dan nilai apa yang akan dicari.

  3. Gunakan pairs() untuk mengulang melalui kamus. Coba kodekan sendiri sebelum memeriksa pekerjaan Anda di solusi di bawah ini.


    local function findPet(whereToSearch, searchFor)
    for place, value in pairs(whereToSearch) do
    end
    end
  4. Saat loop for mengulang melalui kamus, gunakan return untuk mengembalikan kamar di mana hewan peliharaan ditemukan.


    local function findPet(whereToSearch, searchFor)
    for place, value in pairs(whereToSearch) do
    if value == searchFor then
    return place
    end
    end
    end