Wartości zwracane z tabel

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Powszechnym potrzebą w wielu strukturach danych jest zwracanie wartości. Ten artykuł omówi szukanie tabeli używając pairs() lub ipairs() dla połowy dowolnego elementu tabeli, takiego jak klucz lub wartość, aby znaleźć i zwrócić pozostałą połowę.

Przykład używa listy arkuszy, które czekają na naprawę. ipairs() służy do powrotu miejsca statku w linii.


local shipToFind = "Void Racer"
-- stateczniki czekają na naprawę
local waitingShips = {"Battle Sun", "Void Racer", "The Big Slow"}
-- Zdobądź miejsce w linii
local function getPlaceInLine(shipName)
for placeInLine, ship in ipairs(waitingShips) do
if ship == shipName then
return placeInLine
end
end
end
--Drukuj miejsce w linii
local placeInLine = getPlaceInLine(shipToFind)
print("Your place in line is " .. placeInLine)

Przykład wyszukiwania słowa典

Czy kiedykolwiek szukałeś zaginionego zwierzaka w domu, poszukując pokój po pokoju? Sam w kodzie funkcję szukania w słowniku zwierzaków nazyającym się dom, aby zobaczyć, który pokój ma zaginiony szczeniak.

  1. Kopiuj słownik poniżej, aby działał jako dom.


    local house = {
    kitchen = "pile of Junk",
    livingRoom = "kitten",
    bedroom1 = "nobody there",
    bedroom2 = "puppy",
    }
  2. Utwórz nową funkcję nazwaną findPet() , aby szukać słownika. Włącz parametry dla tego słownika, a co wartość do szukania.

  3. Użyj pairs() , aby przeszukiwać słownik. Spróbuj zapisać własny przed sprawdzeniem swojej pracy w rozwiązaniu poniżej.


    local function findPet(whereToSearch, searchFor)
    for place, value in pairs(whereToSearch) do
    end
    end
  4. Podczas gdy for loop przetwarza poprzez słownik, użyj return , aby przekazać pokój, w którym znaleziono zwierzaka.


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