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 cobrirá a busca de uma tabela usando pairs() ou ipairs() para metade de qualquer elemento da tabela, como a chave ou o valor, para encontrar e retornar a outra metade.

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


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

Exemplo de Pesquisa em Dicionário

Você já pesquisou por um animal de estimação perdido em casa indo sala por sala? No seu próprio código, uma função para pesquisar em um dicionário chamado casa para ver qual sala contém 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 no dicionário. Inclua parâmetros para qual dicionário pesquisar e qual valor buscar.

  3. Use pairs() para iterar pelo 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 loop for se repete no dicionário, use retornar para passar de volta para 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