Retorno de valores de 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á la búsqueda de una tabla usando pairs() o ipairs() para encontrar y devolver la otra mitad de cualquier elemento de la tabla, como la clave o el valor.

El ejemplo usa una lista de barcos que esperan ser reparados. ipairs() se usa para devolver el lugar de un barco en la línea.


local shipToFind = "Void Racer"
-- Barcos a la espera de reparación
local waitingShips = {"Battle Sun", "Void Racer", "The Big Slow"}
-- Consigue tu lugar en la fila
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 diccionarios

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

  1. Copia el diccionario de abajo 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 en el diccionario. Incluye parámetros para qué diccionario buscar y qué valor buscar.

  3. Usa pairs() para iterar 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 el bucle for se itera a través del diccionario, use devolver para pasar por 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