#Lua: tabelle

Luando#5: Qui parleremo delle tabelle, una facilitazione di Lua per gestire dati, e vi mostrerò qualcosa a riguardo, anche se ha anche caratteristiche avanzate come le meta-tabelle che cito soltanto, qui.

Alla base una tabella permette due cose: ancora una volta l’abbinamento tra lettura e scrittura, come per l’IO (Input e Output, ricordate?).

Supponiamo di avere una tabella inizialmente vuota:

tabella1={}

Oppure una tabella inizialmente con qualche elemento:

tabella2={"nord","sud","ovest","est"}

Vediamo che succede a leggerci e a scriverci:

return tabella2[1] -- restituisce "nord"

Cosi come visto sopra si legge dalla tabella. Si usa la seguente sintassi: (sintassi? si, come per una grammatica analizzabile dal computer)

nome_tabella[chiave] -- restituisce il valore

Valori? Chiavi? Si, una tabella in senso astratto è una associazione chiavi-valori, ogni chiave con il suo valore e ogni valore con la sua chiave (un pò come ogni variabile ha il suo nome e il suo valore contenuto, anche valore nil).

Questa che abbiamo vista era una tabella con chiavi di tipo intero: 1,2,3,4 sono le chiavi, avendo i 4 elementi (1:nord, 2:sud, 3:ovest, 4:est, nell’esempio sopra). Nota: in Lua il primo elemento a chiave numerica ha chiave 1 e non zero (altri linguaggi iniziano a contare da zero, in Lua si inizia contare da 1).

Infatti passiamo alle associazioni con chiavi di tipo stringa (negli esempi precedenti le chiavi erano di tipo intero, numero intero):

tabella_stringhe={base=4.5, altezza=7}

Vedete? Molto simili alle assegnazioni delle variabili. Lo spiego: crea una tabella vuota (ovvero “{}” se ricordate) e pone la chiave chiamata “base” (chiave di tipo stringa!) al valore numerico “4.5” e la chiave “altezza” (stringa, non intero) al valore numerico “7” (vedi sopra, sintassi stile assegnazioni di variabili).

Infatti scoprirete che le variabili in Lua usano le tabelle, ma non vorrei confondervi. Dicevamo: leggere dati e scrivere dati.

nome_tabella[chiave] -- restituisce il valore
nome_tabella[chiave]=valore -- assegna un valore

Se vi sembra inizialmente complicato ricordatevi soltanto di queste due sintassi, per leggere un valore la prima, per scrivere un valore la seconda. Nota: anche le variabili possono essere sia lette che scritte:

variabile1="valore1" -- scrive in variabile1
return variabile1 -- legge da variabile1 per restituirlo mediante return

In breve il solo nome permette di leggere il valore, il nome con un “=” di assegnazione associa un valore a quel nome. Associa. Sia nel caso delle variabili che delle tabelle si tratta di associazioni, sebbene temporanee perchè ri-assegnabili (per questa variabilità si parla di variabili).

local triangolo={base=4.5, altezza=7} -- dati_triangolo
return (triangolo.base*triangolo.altezza)/2

Ecco un’altra sintassi:

nome_tabella.chiave -- restituisce il valore
nome_tabella[chiave] -- restituisce il valore

La sintassi con il “.” punto è adatta però soltanto alle chiavi di tipo stringa (ma senza spazi eheh). Queste due sintassi si equivalgono in questo caso mostrato:

triangolo.base -- con il "." punto per le chiavi stringa senza spazi
triangolo["base"] -- con le parentesi quadre generiche

Per il momento basta così ma ricordate che con le parentesi quadre avendo la “chiave” potete fare riferimento a un valore contenuto nella tabella, sia per poterlo leggere (e usare) sia per poterlo scrivere (e modificare).


Commenti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *