Mesas

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

El tipo de datos de la tabla puede almacenar múltiples valores de cualquier tipo que no sea nil, incluidos booleanos, números, cadenas, funciones y otras tablas. Construye tablas con paréntesis ({} ):


-- Construye una tabla vacía asignada a la variable "t"
local t = {}
print(t) -- {}

Puede usar una tabla como una matriz o diccionario . Las matrices usan una lista ordenada de números como índices, pero los diccionarios pueden tener números, cadenas y objetos como índices.

Para obtener más información sobre las funciones integradas para trabajar con tablas, consulte la biblioteca table.

Matrices

Una matriz **** es una lista ordenada de valores. Las matrices son útiles para almacenar colecciones de datos, como un grupo de jugadores con permisos especiales.

Creación de Arrays

Para crear una matriz usando una tabla de Luau, declare los valores en orden secuencial, separados por comas.


-- Construye una matriz con tres elementos
local testArray = {"A string", 3.14159, workspace.Camera}
print(testArray)

Leyendo de Arrays

Para leer de una matriz/lista, agregue un par de paréntesis después de su referencia y especifique el número de índice del elemento dentro ([pos]):


-- Construye una matriz con tres elementos
local testArray = {"A string", 3.14159, workspace.Camera}
print(testArray[1]) -- Una cadena
print(testArray[2]) -- 3,14159
print(testArray[3]) -- Camera

Escribiendo a Arrays

Para definir o reescribir el valor de un conjunto en un índice, declare el número del índice entre paréntesis ([index] ) seguido de = y el valor:


local testArray = {"A string", 3.14159, workspace.Camera}
testArray[2] = 12345
testArray[4] = "New string"
print(testArray[2]) --12345siguiente
print(testArray[4]) -- New string

Iterando sobre Arrays

Para iterar sobre un matriz/lista, puede usar un bucle for. Debido a que los conjuntos tienen índices numéricos, también puede usar un bucle numérico for desde 1 hasta la longitud del conjunto (#array ).


local testArray = {"A string", 3.14159, workspace.Camera, "New string"}
-- Círculo usando iteración general
for index, value in testArray do
print(index, value)
end
-- Iterar usando el operador de longitud de matriz (#)
for index = 1, #testArray do
print(index, testArray[index])
end
--[[ Resultando Salida:
1 A string
2 3.14159
3 Camera
4 New string
1 A string
2 3.14159
3 Camera
4 New string
]]

Insertando ítems

Hay dos formas integradas de insertar un elemento en el final de un matriz/lista:

  • Pasa una referencia a la matriz y el valor del elemento a la función table.insert() de Luau.
  • Añade el nuevo elemento a la matriz usando la sintaxis array[#array+1].

local testArray = {"A string", 3.14159}
table.insert(testArray, "New string")
testArray[#testArray+1] = "Another new string"
print(testArray[3]) -- Nueva cadena
print(testArray[4]) -- Another new string

Para insertar un elemento entre el comienzo y el final de un matriz/lista, incluye un valor de posición como el segundo argumento de table.insert() . Esto inserta el nuevo elemento y empuja los siguientes elementos hacia arriba una posición de índice.


local testArray = {"First item", "Next item"}
table.insert(testArray, 2, "NEW ITEM #2")
print(testArray[1]) -- Primer objeto
print(testArray[2]) -- NUEVO ARTÍCULO #2
print(testArray[3]) -- Next item

Eliminando artículos

Para eliminar un elemento de un matriz/lista, use table.remove() . Esto elimina el elemento en la posición especificada y mueve los siguientes elementos de vuelta a una posición de índice.


local testArray = {"First item", "Next item", "Last item"}
table.remove(testArray, 2)
print(testArray[1]) -- Primer objeto
print(testArray[2]) -- Last item

Diccionarios

Los diccionarios son una extensión de los arrays. Los diccionarios almacenan un conjunto de pares de valores clave, donde las llaves pueden ser cualquier número, cadena u objeto.

Creación de diccionarios

Para crear una tabla de diccionarios, defina cada tecla seguida de = y el valor **** . Separe cada par de valores de clave con una coma:


local testDictionary = {
FruitName = "Lemon",
FruitColor = "Yellow",
Sour = true
}

Las llaves para los diccionarios pueden ser números, cadenas y objetos. Por ejemplo, una llave también puede ser un Instance . Para usar objetos como llaves, declare la llave entre corchetes ([key] ):


local part = Instance.new("Part")
local testDictionary = {
PartType = "Block",
[part] = true
}

Leyendo de diccionarios

Para leer de un diccionario, agregue un par de paréntesis después de su referencia y especifique el nombre de la clave. Consulte directamente una clave de cadena usando comillas (["key"] ) o use un valor variable ([key] ).


local part = Instance.new("Part")
local testDictionary = {
PartType = "Block",
[part] = true
}
-- Incluir comillas para teclas de cadena
print(testDictionary["PartType"]) -- Bloquear
-- Omitir citas para teclas que no sean de cadena
print(testDictionary[part]) -- true

Escribiendo a Diccionarios

Para definir o reescribir el valor de una clave de diccionario nueva o existente, declare el nombre de la clave entre paréntesis ([key] ) seguido de = y el valor:


local testDictionary = {
FruitName = "Lemon",
Sour = true
}
-- Cambiar el valor de las llaves existentes
testDictionary["FruitName"] = "Cherry"
testDictionary["Sour"] = false
-- Insertar nuevo par de claves y valores
testDictionary["FruitCount"] = 10
print(testDictionary["FruitName"]) -- Cereza
print(testDictionary["Sour"]) -- falso
print(testDictionary["FruitCount"]) -- 10

Iterando sobre diccionarios

Para iterar sobre un diccionario, use la función global pairs() en un bucle for:


local testDictionary = {
FruitName = "Lemon",
FruitColor = "Yellow",
Sour = true
}
for key, value in pairs(testDictionary) do
print(key, value)
end
--[[ Resultando Salida:
FruitName Lemon
Sour true
FruitColor Yellow
]]

Eliminando pares de valores clave

Para eliminar o eliminar un par de valores de clave de un diccionario, establezca su valor para una clave en nil .


local testDictionary = {
FruitName = "Lemon",
FruitColor = "Yellow",
Sour = true
}
testDictionary["Sour"] = nil
for key, value in pairs(testDictionary) do
print(key, value)
end
--[[ Resultando Salida:
FruitName Lemon
FruitColor Yellow
]]

Tablas como Referencias

Si almacena una tabla en una nueva variable, Luau no crea una copia de esa tabla. En su lugar, la variable se convierte en una referencia , o puntero, a la tabla original. Cualquier referencia a una tabla refleja cualquier cambio en la tabla original:


local originalArray = {10, 20}
local arrayReference = originalArray
print("Original:", originalArray[1], originalArray[2])
print("Reference:", arrayReference[1], arrayReference[2])
-- Cambiar valores en la matriz/listaoriginal
originalArray[1] = 1000
originalArray[2] = 2000
print("Reference:", arrayReference[1], arrayReference[2])
--[[ Resultando Salida:
Original: 10 20
Reference: 10 20
Reference: 1000 2000
]]

Clonando mesas

Clones superficiales

Para copiar una tabla sin tablas anidadas, Luau ofrece el método table.clone().


local original = {
key = "value",
engine = "Roblox",
playerID = 505306092
}
local clone = table.clone(original)

Clones profundos

Para copiar una tabla más compleja con tablas anidadas dentro de ella, necesitarás usar una función recursiva similar a la siguiendo:


local function deepCopy(original)
local copy = {}
for k, v in pairs(original) do
if type(v) == "table" then
v = deepCopy(v)
end
copy[k] = v
end
return copy
end

Con la función en su lugar, puede hacer una copia profunda de la siguiente manera:


local original = {
key = "value",
playerInfo = {
playerID = 505306092,
playerName = "PlayerName"
},
otherInfo = {
{
{1, 3, 5, 7, 9}
}
}
}
local clone = deepCopy(original)