Assegnazione è il mezzo di base del cambiamento del valore di una variabile o un campo di tabella:

a = "ciao" .. "mondo"
tn = tn + 1

Lua consente assegnamento multiplo, in cui è assegnato un elenco di valori a un elenco di variabili in un solo passaggio. Entrambe le liste hanno i loro elementi separati da virgole. Ad esempio, nella cessione

a, b = 10, 2 * x

la variabile una ottiene il valore 10 e b ottiene 2 * x.
In un assegnamento multiplo, Lua prima valuta tutti i valori e solo allora esegue le assegnazioni. Pertanto, si può usare un assegnamento multiplo per scambiare due valori, come in

x, y = y, x - di swap 'x' per `y '
a [i], un [j] = a [j], a [i] - scambio `a [i] 'per` a [j]'

Lua sempre regola il numero di valori per il numero di variabili: Quando l'elenco di valori è più corta della lista di variabili, le variabili aggiuntive ricevono nil come loro valori; quando l'elenco dei valori è più lungo, i valori aggiuntivi vengono scartate silenziosamente:

a, b, c = 0, 1
stampa (a, b, c) -> 0 1 nil
a, b = a + 1, + b 1, b 2 + - valore di b + 2 viene ignorato
stampa (a, b) -> 1 2
a, b, c = 0
stampa (a, b, c) -> 0 nil nil

L'ultima assegnazione nel esempio sopra mostra un errore comune. Per inizializzare un insieme di variabili, è necessario fornire un valore per ciascuno di essi:
a, b, c = 0, 0, 0
stampa (a, b, c) -> 0 0 0

In realtà, la maggior parte degli esempi precedenti sono alquanto artificiale. Io uso raramente assegnazione multipla semplicemente a scrivere diversi incarichi in una sola riga. Ma spesso abbiamo davvero bisogno di assegnazione multipla. Abbiamo già visto un esempio, per scambiare due valori. Un uso più frequente è quello di raccogliere più rendimenti chiamate di funzione. Come vedremo in dettaglio più avanti, una chiamata di funzione può restituire più valori. In tali casi, una singola espressione può fornire i valori per diverse variabili. Ad esempio, nella cessione

a, b = f ()
f () restituisce due risultati: una ottiene il primo e b ottiene il secondo.