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.

Por ejemplo:

Síntaxis del diccionario Luau

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

Utilice diccionarios cuando necesite etiquetar valores, no solo enumerarlos en orden como lo hace un array.Practica el uso de diccionarios en este tutorial manipulando los valores asociados con un jugador.

Sintaxis de diccionario

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


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

Para referenciar partes o otros objetos instanciados como claves, utilice paréntesis.


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

Crea un diccionario

Un uso diario de 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 de enemigo a la clave, seguido de una coma.


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


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

Usar valores de diccionario

Hay dos formas de acceder a los valores de diccionario:

  • tableName["keyName"] (importante, tome nota de las citas)
  • tableName.keyName

local enemy = {
Name = "Spike",
Health = 1000,
}
print("The villain " .. enemy["Name"] .. " approaches!")
print("The villain " .. enemy.Name .. " approaches!")

El estilo que se debe utilizar suele depender del propósito de la tabla.Para tablas que contienen una colección de valores como una lista de jugadores en un servidor, los codificadores generalmente usarán tableName["keyName"] .Para un diccionario utilizado para describir un objeto, es más probable que los codificadores utilicen tableName.keyName .

Cambiar un valor de diccionario

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

  1. Debajo de la tabla enemy, establece el nombre del enemigo a otra cosa.


    local enemy = {
    Name = "Spike",
    Health = 1000,
    }
    enemy.Name = "Rana"
    print("The enemy's name is " .. enemy.Name)
  2. Prueba 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 codificación utiliza una variable para agregar el nombre de un jugador como clave cuando se unen a la experiencia y luego establece el valor de sus puntos en 0.

  1. En ServerScriptService , crea un nuevo script llamado PlayerPoints.En el script, obtenga el servicio de jugadores y cree 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 Jugador , y una declaración de impresión para probar.


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


    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("hello " .. 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 coincida con la variable.


    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("hello " .. name)
    playerPoints[name] = 0
    print(name .. " has " .. playerPoints[name] .. " points.")
    end
  6. Ejecute el proyecto y observe la salida.

Guión terminado

local Players = game:GetService("Players")
local playerPoints = {
}
local function setPoints(newPlayer)
local name = newPlayer.Name
print("hello " .. name)
playerPoints[name] = 0
print(name .. " has " .. playerPoints[name] .. " points.")
end
Players.PlayerAdded:Connect(setPoints)

Desafíos opcionales

A continuación, se muestran algunos desafíos que se aplican al uso de diccionarios de diferentes maneras. Vea si puede construir el código para estos.

  • Crea una parte de trampa que daña con el tiempo a un jugador. Una vez que un jugador toca la trampa, dañarlo, espera, luego permite que sea dañado nuevamente.
  • Crea una función que verifica cuál de dos jugadores tiene más puntos al acceder a un diccionario.
  • Crea un cifro, un sistema de intercambiar una cadena por otra para crear un código "secreto".Por ejemplo, la letra "A" se puede intercambiar por "G", o la palabra "manzana" se puede intercambiar por "naranja".

Diccionarios y pares()

pairs() es una función que a menudo se usa 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 .. " is " .. value)
end

pairs() se puede utilizar para trabajar con la clave, el valor o ambos de un elemento de diccionario.En el bucle for de abajo, 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("You have:")
for itemName, itemValue in pairs(inventory) do
print(itemValue, itemName)
end

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


You have:
43 Gold Bricks
3 Carrots
2 Torches

Resumen

Los diccionarios son tablas que utilizan pares de clave-valor en lugar de valores indexados.Los diccionarios y los arreglos comienzan de manera similar asignando curly brackets a una variable.Manténga las entradas separadas con comas.

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

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

Al usar paréntesis, tenga cuidado; los nombres de clave creados dentro de la tabla deben tratarse como cadenas: tableName["keyName"].Sin embargo, al hacer referencia a objetos como partes, no se necesitan las citaciones: tableName[keyName] .

Muchos scripts deben pasar por diccionarios o arrays, pero es posible que no siempre sepas el comienzo 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 diferentes tamaños.

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