Introducción a los diccionarios

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

Los diccionarios son tablas que asocian nombres o claves con un valor en lugar de un índice.

Ejemplo:

Sintaxis de diccionario Luau
local pet = {
Name = "Bobbie",
Type = "Dog",
}

Usa diccionarios cuando necesites etiquetar valores, no solo listarlos en orden como lo hace un array. Practica usando diccionarios en este tutorial manipulando valores asociados con un jugador.

Sintaxis de diccionario

Al igual que los arrays, los diccionarios se asignan a una variable con llaves {}. Los pares clave-valor se almacenan en líneas separadas seguidas de una coma. Las claves y los valores pueden ser de cualquier tipo de dato, incluyendo cadenas, números y nombres de variables.

local playerNames = {
player1 = "Zap",
player2 = "Kel",
}
print(playerNames["player1"])

Para referenciar partes u otros objetos instanciados como claves, usa corchetes.

local greenPart = workspace.GreenPart
local redPart = workspace.RedPart
local partList = {
[greenPart] = true,
[redPart] = false,
}
print(partList[redPart])

Crear un diccionario

Un uso cotidiano de los diccionarios es organizar la información de jugadores o personajes. Estos pasos exploran cómo se puede almacenar y acceder a la información de un personaje enemigo teórico.

  1. En un nuevo script, crea un diccionario llamado enemy.

    local enemy = {
    }
  2. La primera clave en el diccionario rastreará el nombre del enemigo con una variable llamada Name.

    local enemy = {
    Name
    }
  3. Asigna un nombre al enemigo a la clave, seguido de una coma.

    local enemy = {
    Name = "Spike",
    }
  4. Agrega un segundo par clave-valor para cuánta salud debería tener el enemigo. Recuerda, las claves siempre deben usar el mismo tipo de dato, pero los valores no tienen que hacerlo.

    local enemy = {
    Name = "Spike",
    Health = 1000,
    }

Usar valores de diccionario

Hay dos formas de acceder a los valores de un diccionario:

  • tableName["keyName"] (importante, nota las comillas)
  • tableName.keyName
local enemy = {
Name = "Spike",
Health = 1000,
}
print("¡El villano " .. enemy["Name"] .. " se acerca!")
print("¡El villano " .. enemy.Name .. " se acerca!")

Qué estilo usar generalmente depende del propósito de la tabla. Para tablas que contienen una colección de valores como una lista de jugadores en un servidor, los programadores suelen usar tableName["keyName"]. Para un diccionario utilizado para describir un objeto, los programadores son más propensos a usar tableName.keyName.

Cambiar un valor de diccionario

Cambiar el valor de una clave es lo mismo que cualquier otra variable; usa el operador igual =.

  1. Debajo de la tabla enemy, establece el nombre del enemigo a algo más.

    local enemy = {
    Name = "Spike",
    Health = 1000,
    }
    enemy.Name = "Rana"
    print("El nombre del enemigo es " .. enemy.Name)
  2. Prueba el juego y verifica la ventana de salida.

Variables preexistentes como claves

Los diccionarios pueden interactuar con variables preexistentes declaradas en otras partes de un script. El siguiente ejemplo de código usa una variable para agregar el nombre de un jugador como clave cuando se une al juego y luego establece su valor de puntos a 0.

  1. En ServerScriptService, crea un nuevo script llamado PlayerPoints. En el script, obtén el servicio de Jugadores y crea un diccionario vacío llamado playerPoints.

    local Players = game:GetService("Players")
    local playerPoints = {
    }
  2. Codifica una función local para establecer los puntos del jugador con un parámetro para una nueva variable de jugador. Conecta la función al evento Players.PlayerAdded.

    local playerPoints = {
    }
    local function setPoints(newPlayer)
    end
    Players.PlayerAdded:Connect(setPoints)
  3. En la función, agrega una variable para obtener el Name del jugador, una propiedad en cada objeto Player, y una declaración de impresión para pruebas.

    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("hola " .. name)
    end
  4. Inserta name en el diccionario playerPoints como clave, y establece el valor, los puntos del jugador, a 0.

    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("hola " .. name)
    playerPoints[name] = 0
    end
  5. Usa name para imprimir el nombre del jugador y playerPoints[name] para imprimir el valor de la clave que coincide con la variable.

    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("hola " .. name)
    playerPoints[name] = 0
    print(name .. " tiene " .. playerPoints[name] .. " puntos.")
    end
  6. Ejecuta el proyecto y observa la salida.

Script terminado
local Players = game:GetService("Players")
local playerPoints = {
}
local function setPoints(newPlayer)
local name = newPlayer.Name
print("hola " .. name)
playerPoints[name] = 0
print(name .. " tiene " .. playerPoints[name] .. " puntos.")
end
Players.PlayerAdded:Connect(setPoints)

Desafíos opcionales

A continuación se presentan algunos desafíos que se aplican al uso de diccionarios de diferentes maneras. Ve si puedes desarrollar el código para estos.

  • Crea una parte trampa que haga daño con el tiempo a un jugador. Una vez que un jugador toque la trampa, inflígele daño, espera y luego permite que le hagan daño nuevamente.
  • Crea una función que verifique cuál de dos jugadores tiene más puntos accediendo a un diccionario.
  • Crea un cifrado, un sistema de intercambio de una cadena por otra para crear un código "secreto". Por ejemplo, la letra "A" puede ser intercambiada por "G", o la palabra "manzana" puede ser intercambiada por "naranja".

Diccionarios y pairs()

pairs() es una función que se usa a menudo para iterar a través de diccionarios. Un ejemplo se ve a continuación.

local myDictionary = {
["Blue Player"] = "Ana",
["Gold Player"] = "Binh",
["Red Player"] = "Cate",
}
for key, value in pairs(myDictionary) do
print(key .. " es " .. value)
end

pairs() se puede usar para trabajar con la clave, el valor o ambos de un elemento del diccionario. En el bucle for a continuación, la primera variable es la clave. La segunda variable es el valor. El diccionario con el que deseas trabajar se pasa a pairs().

local inventory = {
["Gold Bricks"] = 43,
Carrots = 3,
Torches = 2,
}
print("Tienes:")
for itemName, itemValue in pairs(inventory) do
print(itemValue, itemName)
end

Cuando se ejecuta, el código imprimirá lo siguiente:

Tienes:
43 Gold Bricks
3 Carrots
2 Torches

Resumen

Los diccionarios son tablas que utilizan pares clave-valor en lugar de valores indexados. Los diccionarios y los arrays comienzan de manera similar al asignar llaves a una variable. Mantén las entradas separadas con comas.

Todas las claves dentro de un diccionario deben usar el mismo tipo de dato, pero los valores pueden mezclar tipos de datos sin problema.

La forma en que se accede a un diccionario puede transmitir su propósito. Un diccionario de propiedades de enemigos probablemente se accederá con el operador de punto, mientras que una lista de nombres probablemente usará tableName[keyName].

Al usar corchetes, ten cuidado; los nombres de clave creados dentro de la tabla deben ser tratados como cadenas: tableName["keyName"]. Sin embargo, al referenciar objetos como partes, las comillas no son necesarias: tableName[keyName].

Muchos scripts necesitan recorrer diccionarios o arrays, pero es posible que no siempre conozcas el inicio y el final de estas estructuras de datos. Por ejemplo, un diccionario de jugadores puede estar cambiando, o los jugadores pueden tener un inventario de array de tamaños variables.

En estas situaciones, puedes usar pairs() e ipairs() en un bucle for para recorrer cada elemento sin puntos de inicio y fin conocidos. También puedes usar la iteración general a través de la palabra clave in para recorrer elementos sin necesidad de pairs() o ipairs().

©2026 Roblox Corporation. Roblox, el logotipo de Roblox y "Powering Imagination" son algunas de nuestras marcas registradas y no registradas en los Estados Unidos y otros países.