Devolviendo valores de las tablas

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

Una necesidad común en muchas estructuras de datos es devolver valores. Este artículo cubrirá buscar una tabla usando pairs() o ipairs() para la mitad de cualquier elemento de la tabla, como la clave o el valor, para encontrar y devolver la otra mitad.

El ejemplo usa un array que lista los barcos que están esperando para ser reparados. ipairs() se usa para devolver el lugar de un barco en línea.


local shipToFind = "Void Racer"
-- Barcos esperando reparación
local waitingShips = {"Battle Sun", "Void Racer", "The Big Slow"}
-- Obtener lugar en la línea
local function getPlaceInLine(shipName)
for placeInLine, ship in ipairs(waitingShips) do
if ship == shipName then
return placeInLine
end
end
end
--Imprimir lugar en línea
local placeInLine = getPlaceInLine(shipToFind)
print("Your place in line is " .. placeInLine)

Ejemplo de búsqueda de diccionario

¿Alguna vez has buscado una mascota perdida en la casa yendo de habitación en habitación? Con tu propio código, una función para buscar a través de un diccionario llamado casa para ver qué habitación contiene un cachorro perdido.

  1. Copia el diccionario a continuación para actuar como la casa.


    local house = {
    kitchen = "pile of Junk",
    livingRoom = "kitten",
    bedroom1 = "nobody there",
    bedroom2 = "puppy",
    }
  2. Crea una nueva función llamada findPet() para buscar el diccionario. Ingrese parámetros para que el diccionario busque y busque el valor.

  3. Usa pairs() para repasar a través del diccionario. Intenta codificar tu propio antes de verificar tu trabajo en la solución a continuación.


    local function findPet(whereToSearch, searchFor)
    for place, value in pairs(whereToSearch) do
    end
    end
  4. A medida que la forzada de repetición de la lista de definiciones avanza, usa return para devolver la habitación donde se encontró la mascota.


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