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 del diccionario Luau

local pet = {
Name = "Bobbie",
Type = "Perro",
}

Utiliza diccionarios cuando necesites etiquetar valores, no solo listarlos en orden como lo hace un array. Practica usar diccionarios en este tutorial manipulando valores asociados a un jugador.

Sintaxis del 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, incluidos strings, números y nombres de variables.


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

Para referenciar partes u otros objetos instanciados como claves, utiliza 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 del jugador o del personaje. 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 debe 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 del diccionario:

  • tableName["keyName"] (es 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 normalmente usarán tableName["keyName"]. Para un diccionario que se utiliza 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 con cualquier otra variable; utiliza 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. Realiza una prueba y revisa 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 codificación utiliza una variable para agregar el nombre de un jugador como clave cuando se une a la experiencia 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 probar.


    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. Utiliza 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 a usar diccionarios de diferentes maneras. Vea si puede desarrollar el código para estos.

  • Crea una parte de trampa que haga daño a un jugador con el tiempo. Una vez que un jugador toque la trampa, hazle daño, espera, y luego permite que se le haga 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 un string por otro para crear un código "secreto". Por ejemplo, la letra "A" puede intercambiarse con "G", o la palabra "manzana" puede intercambiarse con "naranja".

Diccionarios y pairs()

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


local myDictionary = {
["Jugador Azul"] = "Ana",
["Jugador Dorado"] = "Binh",
["Jugador Rojo"] = "Cate",
}
for key, value in pairs(myDictionary) do
print(key .. " es " .. value)
end

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


local inventory = {
["Ladrillos Dorados"] = 43,
Zanahorias = 3,
Torchas = 2,
}
print("Tienes:")
for itemName, itemValue in pairs(inventory) do
print(itemValue, itemName)
end

Al ejecutarse, el código imprimirá lo siguiente:


Tienes:
43 Ladrillos Dorados
3 Zanahorias
2 Torchas

Resumen

Los diccionarios son tablas que utilizan pares clave-valor en lugar de valores indexados. Los diccionarios y los arrays comienzan de manera similar asignando 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 las claves creadas dentro de la tabla deben ser tratados como strings: tableName["keyName"]. Sin embargo, al hacer referencia a objetos como partes, las comillas no son necesarias: tableName[keyName].

Muchos scripts necesitan recorrer diccionarios o arrays, pero puede que no siempre sepas 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 iteración general a través de la palabra clave in para recorrer elementos sin la 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.