Zwracaj wartości 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.

Powszechną potrzebą w wielu strukturach danych jest powrót wartości.Ten artykuł obejmie wyszukiwanie tabeli za pomocą pairs() lub ipairs() dla połowy dowolnego elementu tablicy, takiego jak klucz lub wartość, aby znaleźć i zwrócić drugą połowę.

Przykład używa listy array zawierającej statki czekające na naprawę. ipairs() jest używany do zwrotu miejsca statku w linii.


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

Przykład wyszukiwania słownika

Czy kiedykolwiek szukałeś zagubionego zwierzaka w domu, przechodząc z pokoju do pokoju? Na własnym kodzie funkcja, która przeszukuje słownik o nazwie dom, aby zobaczyć, który pokój trzyma zagubionego szczeniaka.

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


    local house = {
    kitchen = "pile of Junk",
    livingRoom = "kitten",
    bedroom1 = "nobody there",
    bedroom2 = "puppy",
    }
  2. Stwórz nową funkcję o nazwie findPet(), aby wyszukać słownik. Włącz parametry dla tego słownika, który ma zostać wyszukiwać, oraz wartość, którą należy wyszukać.

  3. Użyj pairs() , aby przeszukiwać słownik. Spróbuj skodować 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. W miarę powtarzania się pętla for przez 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