Introduzione ai dizionari

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

I dizionari sono tabelle che associano nomi o chiavi a un valore invece di un indice.

Esempio:

Sintassi del dizionario Luau

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

Usa i dizionari quando hai bisogno di etichettare i valori, non solo di elencarli in ordine come fa un array. Esercitati a utilizzare i dizionari in questo tutorial manipolando i valori associati a un giocatore.

Sintassi del dizionario

Come gli array, i dizionari vengono assegnati a una variabile con parentesi graffe {}. Le coppie chiave-valore sono memorizzate su righe separate seguite da una virgola. Le chiavi e i valori possono essere di qualsiasi tipo di dato, comprese stringhe, numeri e nomi di variabili.


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

Per fare riferimento a parti o ad altri oggetti istanziati come chiavi, usa le parentesi quadre.


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

Creare un dizionario

Un uso comune dei dizionari è organizzare le informazioni su giocatori o personaggi. Questi passaggi esplorano come possono essere memorizzate e accessibili le informazioni di un personaggio nemico teorico.

  1. In un nuovo script, crea un dizionario chiamato enemy.


    local enemy = {
    }
  2. La prima chiave nel dizionario traccerà il nome del nemico con una variabile chiamata Name.


    local enemy = {
    Name
    }
  3. Assegna un nome al nemico alla chiave, seguito da una virgola.


    local enemy = {
    Name = "Spike",
    }
  4. Aggiungi una seconda coppia chiave-valore per quanto salute dovrebbe avere il nemico. Ricorda, le chiavi dovrebbero sempre usare lo stesso tipo di dato, ma i valori non devono necessariamente farlo.


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

Utilizzare i valori del dizionario

Ci sono due modi per accedere ai valori del dizionario:

  • tableName["keyName"] (importante, nota le virgolette)
  • tableName.keyName

local enemy = {
Name = "Spike",
Health = 1000,
}
print("Il villain " .. enemy["Name"] .. " si avvicina!")
print("Il villain " .. enemy.Name .. " si avvicina!")

Quale stile usare dipende solitamente dallo scopo della tabella. Per tabelle che contengono una collezione di valori come una lista di giocatori in un server, i programmatori di solito usano tableName["keyName"]. Per un dizionario usato per descrivere un oggetto, i programmatori sono più propensi a usare tableName.keyName.

Cambiare un valore del dizionario

Cambiare il valore di una chiave è lo stesso che per qualsiasi altra variabile; usa l'operatore di uguaglianza =.

  1. Sotto la tabella enemy, imposta il nome del nemico su qualcos'altro.


    local enemy = {
    Name = "Spike",
    Health = 1000,
    }
    enemy.Name = "Rana"
    print("Il nome del nemico è " .. enemy.Name)
  2. Esegui un test di gioco e controlla la finestra di output.

Variabili preesistenti come chiavi

I dizionari possono interagire con variabili preesistenti dichiarate in altre parti di uno script. Il seguente esempio di codice utilizza una variabile per aggiungere il nome di un giocatore come chiave quando si unisce all'esperienza e poi imposta il suo valore punti a 0.

  1. In ServerScriptService, crea un nuovo script chiamato PlayerPoints. Nel frangente, ottieni il servizio Players e crea un dizionario vuoto chiamato playerPoints.


    local Players = game:GetService("Players")
    local playerPoints = {
    }
  2. Codifica una funzione locale per impostare i punti del giocatore con un parametro per una nuova variabile del giocatore. Collega la funzione all'evento Players.PlayerAdded.


    local playerPoints = {
    }
    local function setPoints(newPlayer)
    end
    Players.PlayerAdded:Connect(setPoints)
  3. Nella funzione, aggiungi una variabile per ottenere il Name del giocatore, una proprietà in ogni oggetto Player, e una dichiarazione print per il test.


    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("ciao " .. name)
    end
  4. Inserisci name nel dizionario playerPoints come chiave e imposta il valore, i punti del giocatore, a 0.


    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("ciao " .. name)
    playerPoints[name] = 0
    end
  5. Usa name per stampare il nome del giocatore e playerPoints[name] per stampare il valore della chiave corrispondente alla variabile.


    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("ciao " .. name)
    playerPoints[name] = 0
    print(name .. " ha " .. playerPoints[name] .. " punti.")
    end
  6. Esegui il progetto e osserva l'output.

Script completato

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

Sfide opzionali

Di seguito sono riportate alcune sfide che si applicano all'uso dei dizionari in modi diversi. Prova a costruire il codice per questi.

  • Crea una parte trappola che infligge danno nel tempo a un giocatore. Una volta che un giocatore tocca la trappola, infliggigli danno, aspetta, poi permetti che venga danneggiato di nuovo.
  • Crea una funzione che controlla quale dei due giocatori ha più punti accedendo a un dizionario.
  • Crea un cifrario, un sistema di scambio di una stringa con un'altra per creare un codice "segreto". Ad esempio, la lettera "A" può essere scambiata con "G," o la parola "mela" può essere scambiata con "arancia."

Dizionari e pairs()

pairs() è una funzione che viene spesso utilizzata per iterare attraverso i dizionari. Un esempio si vede di seguito.


local myDictionary = {
["Giocatore Blu"] = "Ana",
["Giocatore Oro"] = "Binh",
["Giocatore Rosso"] = "Cate",
}
for key, value in pairs(myDictionary) do
print(key .. " è " .. value)
end

pairs() può essere usato per lavorare con la chiave, il valore o entrambi di un elemento del dizionario. Nel ciclo for qui sotto, la prima variabile è la chiave. La seconda variabile è il valore. Il dizionario con cui vuoi lavorare è passato a pairs().


local inventory = {
["Mattoni d'Oro"] = 43,
CAROTE = 3,
Torcie = 2,
}
print("Hai:")
for itemName, itemValue in pairs(inventory) do
print(itemValue, itemName)
end

Quando eseguito, il codice stamperà quanto segue:


Hai:
43 Mattoni d'Oro
3 CAROTE
2 Torcie

I dizionari sono tabelle che utilizzano coppie chiave-valore invece di valori indicizzati. I dizionari e gli array iniziano in modo simile assegnando parentesi graffe a una variabile. Mantieni le voci separate con virgole.

Tutte le chiavi all'interno di un dizionario dovrebbero utilizzare lo stesso tipo di dato, ma i valori possono mescolare tipi di dati senza problemi.

Il modo in cui un dizionario viene accesso può trasmettere il suo scopo. Un dizionario delle proprietà dei nemici sarà probabilmente accesso con l'operatore punto, mentre una lista di nomi utilizzerà probabilmente tableName[keyName].

Quando si usano le parentesi quadre, fai attenzione; i nomi delle chiavi create all'interno della tabella devono essere trattati come stringhe: tableName["keyName"]. Tuttavia, quando si fa riferimento a oggetti come parti, le virgolette non sono necessarie: tableName[keyName].

Molti script devono attraversare dizionari o array, ma potresti non sapere sempre qual è l'inizio e la fine di queste strutture dati. Ad esempio, un dizionario di giocatori potrebbe essere in cambio, o i giocatori potrebbero avere un inventario di array di dimensioni variabili.

In queste situazioni, puoi usare pairs() e ipairs() in un ciclo for per attraversare ogni elemento senza punti di inizio e fine noti. Puoi anche usare un'iterazione generale attraverso la parola chiave in per scorrere gli elementi senza la necessità di pairs() o ipairs().

© 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.