Retornar valores de tabelas

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Uma necessidade comum em muitas estruturas de dados é retornar valores.Este artigo abordará a busca de uma tabela usando pairs() ou ipairs() para metade de qualquer elemento de tabela, como a chave ou o valor, para encontrar e retornar a outra metade.

O exemplo usa uma lista de arrays de navios esperando para serem reparados. ipairs() é usado para retornar o lugar de um navio na linha.


local shipToFind = "Void Racer"
-- Navios esperando por reparo
local waitingShips = {"Battle Sun", "Void Racer", "The Big Slow"}
-- Obtenha lugar na linha
local function getPlaceInLine(shipName)
for placeInLine, ship in ipairs(waitingShips) do
if ship == shipName then
return placeInLine
end
end
end
--Imprimir local na linha
local placeInLine = getPlaceInLine(shipToFind)
print("Your place in line is " .. placeInLine)

Exemplo de busca no dicionário

Você já procurou por um animal de estimação perdido na casa indo de sala em sala? Em seu próprio código, uma função para procurar através de um dicionário chamado casa para ver qual sala tem um cachorrinho perdido.

  1. Copie o dicionário abaixo para agir como a casa.


    local house = {
    kitchen = "pile of Junk",
    livingRoom = "kitten",
    bedroom1 = "nobody there",
    bedroom2 = "puppy",
    }
  2. Crie uma nova função chamada findPet() para pesquisar o dicionário. Inclua parâmetros para qual dicionário pesquisar e para qual valor pesquisar.

  3. Use pairs() para iterar pelo dicionário. Tente codificar o seu próprio antes de verificar seu trabalho na solução abaixo.


    local function findPet(whereToSearch, searchFor)
    for place, value in pairs(whereToSearch) do
    end
    end
  4. À medida que o loop for itera através do dicionário, use return para passar de volta a sala onde o animal de estimação foi encontrado.


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