Retornando 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 pesquisa 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 um array listando navios esperando para serem reparados. ipairs() é usado para retornar o lugar de um navio em linha.


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

Exemplo de Pesquisa no Dicionário

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

  1. Copie o dicionário abaixo para atuar 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 que dicionário pesquise e que valor pesquise.

  3. Use pairs() para iterares através do dicionário. Tente codificar o seu próprio antes de verificar o seu trabalho na solução abaixo.


    local function findPet(whereToSearch, searchFor)
    for place, value in pairs(whereToSearch) do
    end
    end
  4. À medida que o for loop 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