Tipi, valori ed espressioni in Lua

Sommario
Lua È un linguaggio dinamico quando si tratta di tipi di dati e dei loro valori, cioè non ci sono definizioni di alcun tipo quando si crea una variabile e si specifica che si tratta di una stringa, un numero o anche un booleano.
Le espressioni vanno di pari passo con i valori, questi ci permettono di eseguire con essi operazioni, che possono spaziare da operazioni aritmetiche, relazionali e anche condizionali per dare dinamismo ai nostri programmi, ma prima di passare alle espressioni vediamo i tipi di valori che possediamo in Lua e come funzionano all'interno del linguaggio.
Nel Lua Ogni valore carica il proprio tipo, in cui possiamo trovare otto diversi tipi di questi: zero, booleano, numero, stringa, dati utente, funzione, thread e tabella, dove con la funzione genere () possiamo conoscere il nome del tipo del valore dato. Vediamo un semplice esempio di come Lua interpreta questo secondo genere ():

Come vediamo il tipo è dato dal valore che carica e la funzione designata ci aiuta a sapere di cosa si tratta, possiamo vedere che anche nell'ultimo caso della variabile H il risultato è stringa e questo perché la funzione genere () è sempre stringa. Da quando abbiamo visto come Lua interpretare i tipi di dati, diamo un'occhiata a ciascuno di questi in dettaglio:
NilQuesto è un tipo di valore la cui proprietà principale deve essere diversa dagli altri valori. Come abbiamo visto nell'ultimo tutorial, una variabile globale ha il valore di default zero e se vogliamo eliminarlo, assegniamo questo valore, possiamo anche usarlo per rappresentare l'assenza di un valore utile.
booleanoI valori booleani, come nel resto dei linguaggi di programmazione, hanno due valori, vero e falso, ma a differenza di altri linguaggi, questo tipo di dati non ha un dominio totale sulle condizioni poiché qualsiasi può rappresentare una condizione.
NumeroQuesto tipo di dati rappresenta sia numeri interi che decimali. Lua non ha un tipo di valore intero e non ne ha bisogno, poiché Lua può rappresentare qualsiasi intero a 32 bit senza problemi di arrotondamento, ma la cosa più interessante del linguaggio è che possiamo compilarlo per utilizzare un altro tipo, come interi lunghi o float, che è abbastanza utile nei casi in cui l'hardware non ha supporto per i decimali.
CordaLe stringhe in Lua Sono una sequenza di caratteri, sono valori che sono immutabili, cioè non possiamo cambiare un carattere all'interno della stringa. Sono gestiti dalla memoria automatica del linguaggio come il resto degli oggetti e l'assegnazione della stringa può essere con doppi apici o singoli.
TavoloIl tipo di dati table implementa un array associativo, che è un array che può essere indicizzato non solo con numeri ma con stringhe o qualsiasi altro valore del linguaggio, tranne nil. Le tabelle non hanno una dimensione fissa, quindi possiamo includere tutti gli elementi che vogliamo e con loro possiamo rappresentare moduli, pacchetti e oggetti allo stesso modo. Infine, la sua creazione è semplice come usare le parentesi {} all'inizializzazione della tabella.
CaratteristicheLe funzioni in Lua hanno un comportamento abbastanza particolare, possiamo salvarli in variabili, passarli come argomenti ad altre funzioni e restituirli anche come risultati, dove Lua puoi chiamare queste funzioni scritte sia nel linguaggio stesso che in C.
Dati utenteIl tipo di dati dati utente permette di memorizzare in variabili di Lua informazioni arbitrarie da C. Non ha operazioni predefinite su Lua, ad eccezione dei test di assegnazione e uguaglianza, dove la funzione principale di questo tipo è quella di rappresentare nuovi tipi in quanto tali creati da un'applicazione o da una libreria scritta in C.
Come si vede le tipologie non differiscono molto da quello che possiamo trovare nei linguaggi attuali, ma quello che è certo è che la semplicità che abbiamo per rappresentarle è molto maggiore, allora vediamo il ruolo delle espressioni e come possiamo usarle con i nostri valori.
Le operazioni aritmetiche sono estremamente importanti per qualsiasi programma ed è importante sapere come gestirle e quali restrizioni possono esistere nel linguaggio che stiamo utilizzando. Lua supporta gli operatori convenzionali a cui siamo abituati: addizione, sottrazione, moltiplicazione, divisione, esponenziale, percentuale e negazione.
Vediamo allora un semplice codice dove dimostriamo l'uso di alcuni operatori di Lua:
 x = 8 + 5 y = 9 - 2 stampa (x * y% 0,01)
Usiamo addizione, sottrazione e divisione per 2 sul risultato di un'operazione di moltiplicazione, vediamo come risponde l'interprete quando eseguiamo il nostro codice attraverso la console:

INGRANDIRE

Come possiamo vedere, Lua non differisce molto dal resto dei linguaggi per le operazioni aritmetiche, ma la sua semplicità per la scrittura del codice lo rende abbastanza facile da gestire per lo sviluppo del programma.
Lua come altri linguaggi ci fornisce operatori relazionali come maggiore di>, minore di <, minore o uguale =, uguale-uguale == e negazione ~ =. Vediamo che l'unico che forse differisce è la smentita ma dopo che ci abituiamo non ci saranno problemi con il suo utilizzo.
Tutti questi operatori possono restituire vero o falso, dove possiamo anche applicare sia l'operatore di uguaglianza che l'operatore di negazione a due valori. Questi confronti Lua li fa in base al tipo oltre ad altri fattori, vediamo nel codice seguente dove il confronto viene effettuato in base allo stesso oggetto:
 un = {}; ax = 1; a.y = 0 b = {}; b.x = 1; b.y = 0 c = a
Dove se confrontiamo lo stesso, il risultato dell'operazione ci dà che a è uguale a c ma che a è diverso da b, questo è dovuto al fatto che sono lo stesso oggetto. Inoltre, dobbiamo stare molto attenti quando si confrontano diversi tipi, poiché ad esempio 6 è diverso da "6" e se facciamo qualcosa come "3" <"8" Lua darà un errore poiché stiamo mescolando le stringhe.
Gli operatori logici in Lua sono l'e, o l'e non. Quando si effettua un confronto utilizzando questi operatori, verrà restituito il primo argomento se è falso, altrimenti verrà restituito il secondo.Vediamo una serie di esempi nella console interattiva per dimostrare quanto sopra.

INGRANDIRE

Per eseguire la concatenazione in Lua avviene tramite i due punti, cambia un po' la sintassi rispetto ad altri linguaggi ma allo stesso modo è abbastanza semplice, ma Lua Va sempre un po' oltre e se trova un numero e c'è un'operazione di concatenazione, lo converte in una stringa, vediamo due semplici esempi di questa operazione:

INGRANDIRE

Come vediamo per il primo caso l'operazione viene eseguita senza alcun problema, e per il secondo caso abbiamo numeri, Lua li converte automaticamente in stringa. È importante ricordare che le stringhe sono immutabili, quindi questa operazione crea sempre una nuova stringa senza apportare modifiche al suo operando.
Infine, abbiamo i costruttori, che sono espressioni che ci permettono di creare e inizializzare tabelle, questa caratteristica è unica per Lua ed è uno dei suoi meccanismi più versatili e potenti. Possiamo usare un costruttore vuoto senza problemi con solo le parentesi {} che creerà una tabella vuota come tale. Questi possono anche inizializzare array o liste, vediamo un esempio:
 giorni = {"domenica", "lunedì", "martedì", "mercoledì", "giovedì", "venerdì", "sabato"}
Qui creiamo un elenco con i giorni della settimana e se vogliamo accedere ai suoi elementi specificando l'indice degli stessi che abbiamo, ad esempio per ottenere giovedì sarebbe il numero di indice 5 o domenica sarebbe il numero 1, da Lua Non si inizializza a zero come il resto delle lingue, vediamo come appare quando lo eseguiamo nella nostra console:

Possiamo anche creare i nostri array associativi del tipo valore chiave:
matrice = {x = 26, y = 67}
Ma è importante che per accedere ai suoi valori facciamo il riferimento all'indice con doppie virgolette, otterremo il valore zero, vediamo il nostro funzionamento nella console interattiva:

Con questo concludiamo il tutorial, dove potremmo vederlo Lua estende la sua semplicità a tutti i bordi che lo compongono, dai tipi dinamici che gestisce, al modo semplice di fare assegnazioni, alla gestione di operatori relazionali e logici, oltre a fornirci strumenti estremamente utili come concatenazioni e costruttori per rendere il nostro esperienza con la lingua il più piacevole e piacevole possibile.Ti è piaciuto e hai aiutato questo Tutorial?Puoi premiare l'autore premendo questo pulsante per dargli un punto positivo
wave wave wave wave wave