Tabelle

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Il tipo di dato tabella può memorizzare più valori di qualsiasi tipo che non sia nil, inclusi booleans, numeri, stringhe, funzioni, e altre tabelle. Costruisci tabelle con parentesi graffe ({}):


-- Costruisci una tabella vuota assegnata alla variabile "t"
local t = {}
print(t) -- {}

Puoi usare una tabella come array o dizionario. Gli array usano un elenco ordinato di numeri come indici, ma i dizionari possono avere numeri, stringhe e oggetti come indici.

Per ulteriori informazioni sulle funzioni incorporate per lavorare con le tabelle, consulta la libreria table.

Array

Un array è un elenco ordinato di valori. Gli array sono utili per memorizzare collezioni di dati, come un gruppo di giocatori con permessi speciali.

Crea array

Per creare un array usando una tabella Luau, dichiara i valori in ordine sequenziale, separati da virgole.


-- Costruisci un array con tre elementi
local testArray = {"Una stringa", 3.14159, true}
print(testArray)

Leggi dagli array

Per leggere da un array, aggiungi una coppia di parentesi quadre dopo la sua referenza e specifica il numero dell'indice dell'elemento all'interno ([pos]):


-- Costruisci un array con tre elementi
local testArray = {"Una stringa", 3.14159, true}
print(testArray[1]) -- Una stringa
print(testArray[2]) -- 3.14159
print(testArray[3]) -- true

Scrivi negli array

Per definire o riscrivere il valore di un array a un indice, dichiara il numero dell'indice tra parentesi quadre ([index]) seguito da = e dal valore:


local testArray = {"Una stringa", 3.14159, true}
testArray[2] = 12345
testArray[4] = "Nuova stringa"
print(testArray[2]) --12345
print(testArray[4]) -- Nuova stringa

Itera sugli array

Per iterare su un array, puoi usare un ciclo for. Poiché gli array hanno indici numerici, puoi anche utilizzare un ciclo for numerico da 1 alla lunghezza dell'array (#array).


local testArray = {"Una stringa", 3.14159, true, "Nuova stringa"}
-- Ciclo usando iterazione generale
for index, value in testArray do
print(index, value)
end
-- Itera usando l'operatore di lunghezza dell'array (#)
for index = 1, #testArray do
print(index, testArray[index])
end

Inserisci elementi

Ci sono due modi incorporati per inserire un elemento alla fine di un array:

  • Passa un riferimento all'array e al valore dell'elemento alla funzione table.insert() di Luau.
  • Aggiungi il nuovo elemento all'array usando la sintassi array[#array+1].

local testArray = {"Una stringa", 3.14159}
table.insert(testArray, "Nuova stringa")
testArray[#testArray+1] = "Un'altra nuova stringa"
print(testArray[3]) -- Nuova stringa
print(testArray[4]) -- Un'altra nuova stringa

Per inserire un elemento tra l'inizio e la fine di un array, includi un valore di posizione come secondo argomento di table.insert(). Questo inserisce il nuovo elemento e sposta gli elementi successivi di un indice verso l'alto.


local testArray = {"Primo elemento", "Prossimo elemento"}
table.insert(testArray, 2, "ELEMENTO NUOVO #2")
print(testArray[1]) -- Primo elemento
print(testArray[2]) -- ELEMENTO NUOVO #2
print(testArray[3]) -- Prossimo elemento

Rimuovi elementi

Per rimuovere un elemento da un array, usa table.remove(). Questo rimuove l'elemento nella posizione specificata e sposta eventuali elementi successivi indietro di un indice.


local testArray = {"Primo elemento", "Prossimo elemento", "Ultimo elemento"}
table.remove(testArray, 2)
print(testArray[1]) -- Primo elemento
print(testArray[2]) -- Ultimo elemento

Dizionari

I dizionari sono un'estensione degli array. I dizionari memorizzano un insieme di coppie chiave-valore, dove le chiavi possono essere qualsiasi numero, stringa o oggetto.

Crea dizionari

Per creare una tabella dizionario, definisci ogni chiave seguita da = e dal valore. Separa ogni coppia chiave-valore con una virgola:


local testDictionary = {
fruttaNome = "Limone",
fruttaColore = "Giallo",
aspro = true
}

Le chiavi per i dizionari possono essere numeri, stringhe e oggetti. Ad esempio, una chiave può essere anche un Instance. Per usare oggetti come chiavi, dichiara la chiave tra parentesi quadre ([key]):


local parte = Instance.new("Part")
local testDictionary = {
tipoParte = "Blocca",
[parte] = true
}

Leggi dai dizionari

Per leggere da un dizionario, aggiungi una coppia di parentesi dopo il suo riferimento e specifica il nome della chiave. Fai riferimento direttamente a una chiave stringa usando either (["key"]) o (.key), o usa invece un valore variabile ([key]).


local parte = Instance.new("Part")
local testDictionary = {
tipoParte = "Blocca",
[parte] = true
}
-- Includi virgolette per chiavi stringa
print(testDictionary["tipoParte"]) -- Blocca
-- Oppure usa . per indicizzare le chiavi stringa senza spazi
print(testDictionary.tipoParte) -- Blocca
-- Ometti le virgolette per chiavi non stringa
print(testDictionary[parte]) -- true

Scrivi nei dizionari

Per definire o riscrivere il valore di una chiave di dizionario esistente o nuova, dichiara il nome della chiave tra parentesi ([key]) o, se la chiave è una stringa, usa (.key) seguita da = e dal valore:


local testDictionary = {
fruttaNome = "Limone",
aspro = true
}
-- Cambia il valore delle chiavi esistenti
testDictionary["fruttaNome"] = "Ciliegia"
testDictionary.aspro = false
-- Inserisci una nuova coppia chiave-valore
testDictionary.contaFrutta = 10
print(testDictionary.fruttaNome) -- Ciliegia
print(testDictionary.aspro) -- false
print(testDictionary.contaFrutta) -- 10

Itera sui dizionari

Per iterare su un dizionario, usa un ciclo for:


local testDictionary = {
fruttaNome = "Limone",
fruttaColore = "Giallo",
aspro = true
}
for key, value in testDictionary do
print(key, value)
end
--[[ Risultato dell'output:
fruttaNome Limone
aspro true
fruttaColore Giallo
]]

Rimuovi coppie chiave-valore

Per rimuovere o cancellare una coppia chiave-valore da un dizionario, imposta il suo valore per una chiave a nil.


local testDictionary = {
fruttaNome = "Limone",
fruttaColore = "Giallo",
aspro = true
}
testDictionary.aspro = nil
for key, value in testDictionary do
print(key, value)
end
--[[ Risultato dell'output:
fruttaNome Limone
fruttaColore Giallo
]]

Tabelle come riferimenti

Se memorizzi una tabella in una nuova variabile, Luau non crea una copia di quella tabella. Invece, la variabile diventa un riferimento, o puntatore, alla tabella originale. Qualsiasi riferimento a una tabella riflette eventuali modifiche alla tabella originale:


local arrayOriginale = {10, 20}
local riferimentoArray = arrayOriginale
print("Originale:", arrayOriginale[1], arrayOriginale[2])
print("Riferimento:", riferimentoArray[1], riferimentoArray[2])
-- Cambia i valori nell'array originale
arrayOriginale[1] = 1000
arrayOriginale[2] = 2000
print("Riferimento:", riferimentoArray[1], riferimentoArray[2])
--[[ Risultato dell'output:
Originale: 10 20
Riferimento: 10 20
Riferimento: 1000 2000
]]

Clona tabelle

Cloni superficiali

Per copiare una tabella senza nessuna tabella nidificata, Luau offre il metodo table.clone().


local originale = {
chiave = "valore",
motore = "Roblox",
playerID = 505306092
}
local clone = table.clone(originale)

Cloni profondi

Per copiare una tabella più complessa con tabelle nidificate all'interno, dovrai usare una funzione ricorsiva simile alla seguente:


-- La funzione usata per clonare profondamente una tabella
local function deepClone(originale)
-- Definisci la nuova tabella per la copia
local clone = table.clone(originale)
-- Cicla attraverso la tabella originale per controllare i valori delle tabelle
-- Se viene trovata una tabella come valore, clonala a fondo nella chiave (indice)
for key, value in originale do
if type(value) == "table" then
clone[key] = deepClone(value)
end
end
-- Restituisci la copia finale della tabella clonata a fondo
return clone
end

Con la funzione in atto, puoi fare una copia profonda come segue:


local originale = {
chiave = "valore",
informazioniGiocatore = {
playerID = 505306092,
nomeGiocatore = "NomeGiocatore"
},
altreInformazioni = {
{
{1, 3, 5, 7, 9}
}
}
}
local clone = deepClone(originale)

Congela tabelle

Congelare una tabella la rende di sola lettura, il che è utile per creare valori costanti che non vuoi cambiare. Il congelamento è permanente; non esiste un metodo "decongelare" o "scongelare". Per controllare se una tabella è congelata, usa table.isfrozen().

Congelamenti superficiali

Per congelare una tabella senza tabelle nidificate, Luau offre il metodo table.freeze().


local target = {
chiave = "valore",
motore = "Roblox",
playerID = 505306092
}
table.freeze(target)
target.playerID = 1 --> tentativo di modificare una tabella di sola lettura

Congelamenti profondi

Per congelare una tabella più complessa con tabelle nidificate all'interno, usa una funzione ricorsiva simile alla seguente:


local function deepFreeze(target)
-- Congela superficialmente la tabella
table.freeze(target)
-- Controlla ogni chiave della tabella e congela se è una tabella
for _, value in target do
-- Assicurati che il valore non sia congelato; se lo è già, si verificherà un errore
if type(value) == "table" and table.isfrozen(value) == false then
deepFreeze(value)
end
end
end

Con la funzione in atto, puoi congelare profondamente una tabella come segue:


local target = {
chiave = "valore",
informazioniGiocatore = {
playerID = 505306092,
nomeGiocatore = "NomeGiocatore"
},
altreInformazioni = {
{
{1, 3, 5, 7, 9}
}
}
}
deepFreeze(target)
target.informazioniGiocatore.playerID = 1 --> tentativo di modificare una tabella di sola lettura
© 2026 Roblox Corporation. Roblox, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.