Lua - Variabili

Una variabile non è altro che un nome dato a un'area di memoria che i nostri programmi possono manipolare. Può contenere diversi tipi di valori, comprese funzioni e tabelle.

Il nome di una variabile può essere composto da lettere, cifre e il carattere di sottolineatura. Deve iniziare con una lettera o un trattino basso. Le lettere maiuscole e minuscole sono distinte perché Lua fa distinzione tra maiuscole e minuscole. Esistono otto tipi di valori di base in Lua:

In Lua, sebbene non abbiamo tipi di dati variabili, abbiamo tre tipi basati sull'ambito della variabile.

  • Global variables - Tutte le variabili sono considerate globali a meno che non siano esplicitamente dichiarate come locali.

  • Local variables - Quando il tipo è specificato come locale per una variabile, il suo ambito è limitato dalle funzioni all'interno del loro ambito.

  • Table fields - Questo è un tipo speciale di variabile che può contenere qualsiasi cosa tranne zero comprese le funzioni.

Definizione variabile in Lua

Una definizione di variabile significa dire all'interprete dove e quanto creare la memoria per la variabile. Una definizione di variabile ha un tipo opzionale e contiene un elenco di una o più variabili di quel tipo come segue:

type variable_list;

Qui, type è facoltativamente locale o specificato dal tipo rendendolo globale e variable_listpuò essere costituito da uno o più nomi di identificatori separati da virgole. Alcune dichiarazioni valide sono mostrate qui -

local    i, j
local    i
local    a,c

La linea local i, jentrambi dichiara e definisce le variabili i e j; che istruisce l'interprete a creare variabili denominate i, j e limita l'ambito a essere locale.

Le variabili possono essere inizializzate (assegnato un valore iniziale) nella loro dichiarazione. L'inizializzatore è costituito da un segno di uguale seguito da un'espressione costante come segue:

type variable_list = value_list;

Alcuni esempi sono:

local d , f = 5 ,10     --declaration of d and f as local variables. 
d , f = 5, 10;          --declaration of d and f as global variables. 
d, f = 10               --[[declaration of d and f as global variables. 
                           Here value of f is nil --]]

Per la definizione senza un inizializzatore: le variabili con durata di archiviazione statica vengono inizializzate implicitamente con nil.

Dichiarazione delle variabili in Lua

Come puoi vedere negli esempi precedenti, le assegnazioni per le variabili multiple seguono un formato variabile_elenco e valore_elenco. Nell'esempio sopralocal d, f = 5,10 abbiamo d e f in variable_list e 5 e 10 in value list.

L'assegnazione del valore in Lua avviene come la prima variabile in variable_list con il primo valore in value_list e così via. Quindi, il valore di d è 5 e il valore di f è 10.

Esempio

Prova il seguente esempio, dove le variabili sono state dichiarate in alto, ma sono state definite e inizializzate all'interno della funzione principale -

-- Variable definition:
local a, b

-- Initialization
a = 10
b = 30

print("value of a:", a)

print("value of b:", b)

-- Swapping of variables
b, a = a, b

print("value of a:", a)

print("value of b:", b)

f = 70.0/3.0
print("value of f", f)

Quando il codice precedente viene creato ed eseguito, produce il seguente risultato:

value of a:	10
value of b:	30
value of a:	30
value of b:	10
value of f	23.333333333333

Lvalues ​​e Rvalues ​​in Lua

Ci sono due tipi di espressioni in Lua:

  • lvalue- Le espressioni che fanno riferimento a una posizione di memoria sono chiamate espressione "lvalue". Un lvalue può apparire sia come lato sinistro che come lato destro di un compito.

  • rvalue- Il termine rvalue si riferisce a un valore di dati archiviato in un indirizzo in memoria. Un rvalue è un'espressione a cui non può essere assegnato un valore, il che significa che un rvalue può apparire a destra, ma non a sinistra di un compito.

Le variabili sono i valori e quindi possono apparire sul lato sinistro di un compito. I letterali numerici sono rvalues ​​e quindi potrebbero non essere assegnati e non possono essere visualizzati sul lato sinistro. La seguente è una dichiarazione valida:

g = 20

Ma la seguente non è un'affermazione valida e genererebbe un errore in fase di compilazione -

10 = 20

Nel linguaggio di programmazione Lua, a parte i suddetti tipi di assegnazione, è possibile avere più valori lvalori e rvalori nella stessa singola istruzione. È mostrato di seguito.

g,l = 20,30

Nell'affermazione precedente, 20 è assegnato a g e 30 è assegnato a l.