Come configurare smartphone e PC. Portale informativo
  • casa
  • Sicurezza
  • Linguaggio di programmazione dei comandi Lua. Si ripete con l'istruzione for in Lua

Linguaggio di programmazione dei comandi Lua. Si ripete con l'istruzione for in Lua

Lua(dal portoghese "luna") è un linguaggio di programmazione interpretato sviluppato dal Computer Graphics Technology Group della Pontificia Università Cattolica di Rio de Janeiro in Brasile. è distribuito liberamente, open source testi di origine nel linguaggio C. In termini di capacità e implementazione, è il più vicino a JavaScript, ma, dal mio punto di vista, è più flessibile e ha capacità più ampie. Nonostante Lua non abbia concetti come "classe" o "oggetto", sulla base è del tutto possibile creare programmi OOP basati su metatabelle, che consentono anche di implementare, ad esempio, l'overload degli operatori.

In questa lezione voglio darvene alcune di più informazioni generali su questo linguaggio, e nelle lezioni seguenti ti mostrerò in pratica come puoi utilizzare il linguaggio Lua per risolvere problemi di programmazione di giochi.

Storia di Lua

Come ho detto sopra, Lua è stato sviluppato da uno dei dipartimenti dell'Università Cattolica di Rio de Janeiro. Questo è successo nel lontano 1993. Ma da quel momento in poi, si è sviluppato attivamente e periodicamente sono state rilasciate nuove versioni di Lua: è diventato più conveniente, più veloce e più funzionale. IN questo momento versione stabile Lua è la 5.1, ma è già disponibile una versione alpha della 5.2.

tipi Lua

IN Lua Esistono otto tipi di dati principali:

  • zero (non definito)
  • booleano (booleano)
  • numero
  • corda
  • funzione
  • dati utente
  • filo
  • tavolo

Lua è un linguaggio con tipi di dati dinamici. Qualsiasi variabile in Lua può contenere valori di uno qualsiasi dei tipi sopra indicati. Tutti i valori in Lua possono essere memorizzati in variabili, utilizzati come argomenti quando si chiamano funzioni e restituiti come risultato dell'esecuzione della funzione.

Tavoli Lua

I tavoli sono il massimo tipo importante dati in Lua: le tabelle sono la base per l'archiviazione e l'utilizzo tipi personalizzati dati: strutture, array, liste, insiemi, ecc. vengono implementati in Lua proprio tramite tabelle. Una tabella in Lua è un insieme di coppie [Chiave, Valore], dove la chiave può essere un valore di qualsiasi tipo tranne zero.

Dispositivo Lua

Come molti linguaggi di programmazione interpretati, l'implementazione Lua ha un compilatore di bytecode sorgente-eseguibile separato e una macchina virtuale per l'esecuzione del bytecode generato. Nel caso di Lua, il bytecode non sono istruzioni macchina, ma comandi” processore virtuale Lua" con più registri, che migliora l'efficienza di esecuzione. La macchina virtuale Lua utilizza anche il principio della garbage collection (simile a Java o .NET), che consente al programmatore di non preoccuparsi dell'allocazione/eliminazione della memoria, che viene gestita dall'interprete stesso.

Per le attività critiche, esiste un compilatore Lua: che ti consente di ottenere codice più veloce.

Dove viene utilizzato Lua?

Lua, nel corso dei molti anni della sua esistenza e sviluppo, ha conquistato il cuore di molti sviluppatori di software e oggigiorno viene utilizzato in un'ampia varietà di aree di programmazione: scripting giochi per computer(Crisi, Grido lontano, Diablo 3, S.T.A.L.K.E.R.), sui server di giochi MMO (World of Warcraft, Allods Online), nei pacchetti grafici (ad esempio, in Adobe PhotoshopLightroom), nei motori di gioco e nei game designer (INSTEAD), per la programmazione della GUI di alcune applicazioni (lo stesso Photoshop Lightroom) e in molte altre attività.

Documentazione Lua

In generale su Internet si trova molta documentazione ed esempi di utilizzo. Pertanto, non approfondirò troppo questo argomento. Posso solo dire che posso consigliarvi la lettura

introduzione

Questa guida è destinata a chi ha un'esperienza limitata con LUA. Tratteremo le nozioni di base su come formattare il codice, gli elementi costitutivi per creare codice più complesso e forniremo alcuni esempi. Il manuale è scritto in modo tale da poter essere messo subito in pratica. Pertanto, dovresti aprire Tabletop Simulator e il tuo editor LUA per procedere oltre.

Questo è il primo tutorial di questa serie. Il secondo è Imparare Lua More. Il terzo è un insieme funzioni utili chiamato Apprendimento delle funzioni Lua.

Prima della prima pressione di un tasto

Innanzitutto, ti consiglio vivamente di installare Atom se intendi eseguire script in Tabletop Simulator. Sa quali funzioni possono essere utilizzate e importerà/esporterà il codice da/verso TTS.

Quindi dovresti aggiungere ai segnalibri. Ti collegherai spesso a questo sito una volta che inizi a scrivere i tuoi script. Qui troverai funzioni speciali in Tabletop Simulator e come funzionano. Utilizzerai molto spesso le pagine API e Oggetto, di almeno, nella mia esperienza.

Preparazione

Quando salvi i tuoi script in Tabletop, utilizzerà il tuo file ultimo salvataggio, quindi caricare gli script al suo interno. Pertanto, per qualsiasi script che intendi scrivere, dovrai effettuare le seguenti operazioni:

  • Prepara la tavola come vuoi tu.
  • Salva la tabella.
  • Carica la tabella.
Per questo esercizio, prendi una tabella vuota e crea due oggetti (io ho usato un blocco quadrato e uno rettangolare) e una pedina rossa.

Premilo ripetutamente perché ovviamente lo farai.

CREDITO EXTRA: Quando crei tabelle, ci sono diversi modi per farlo. La tecnica utilizzata qui era quella di garantire chiarezza visiva. Tuttavia, la creazione di parametri dei pulsanti come questa occupa molto spazio se hai molti pulsanti. Preferisco progettare i miei tavoli in modo da risparmiare spazio ma senza esagerare. Utilizzando il nostro esempio, creerei la tabella delle opzioni in questo modo:

button_parameters = (click_function="buttonClicked", function_owner=nil, label="Press Me", posizione=(0,0.8,0), rotazione=(0,0,0), larghezza=500, altezza=500, font_size= 100)

CREDITO EXTRA: Questo è il momento perfetto per iniziare a giocare cose differenti, cosa che puoi fare con gli oggetti. Vai alla pagina Oggetto nella Knowledge Base e prova il materiale. Sposta gli oggetti, falli cambiare posizione, cambia i loro colori, qualunque cosa tu pensi.

CREDITO EXTRA: Inoltre, ogni volta che si fa clic sul pulsante, la funzione click_function viene eseguita con due parametri. Il primo è un riferimento a un oggetto, in particolare un riferimento all'oggetto a cui è associato il pulsante. Il secondo è il colore (ad esempio "Blu") in formato stringa del colore del giocatore che ha premuto il pulsante.

5) Affermazione logica

Confronto di variabili

Ancora rimuovere tutti gli script all'interno della funzione buttonClicked(). Creeremo una nuova variabile e poi la modificheremo. La nuova variabile sarà di tipo booleano. I valori booleani possono essere solo vero, falso. I valori booleani sono sempre scritti in lettere minuscole. Per prima cosa creeremo la nostra variabile sotto il GUID Oggetti e Dama.

veroOrFalse = vero

Quindi, in buttonClicked, imposteremo una logica per verificare se trueOrFalse è vero. Se è vero, stamperà che è vero e lo cambierà in falso. Se il pulsante viene premuto nuovamente, verrà stampato che è False e cambierà il valore in True.

se veroOrFalse allora print("veroOrFalse era vero.") --trueOrFalse era vero. trueOrFalse = false else print("trueOrFalse era falso.") --trueOrFalse era falso. trueOrFalse = vera fine

Potremmo anche scriverlo così "if trueOrFalse == true then", ma ciò non è necessario. Ricordare che all'istruzione IF deve essere passato un valore booleano. E poiché trueOrFalse è già uno di questi, possiamo eliminare "== true".

Un loop è una sezione di codice che può essere eseguita più volte. Questo è uno degli elementi più complessi che utilizzerai in LUA. Spesso vengono forniti con tabelle, che consentono di eseguire codice per ciascun record nella tabella.

Questo è un altro tipo: ipairs. Le coppie sono necessarie per le tabelle senza tasti numerici e gli ipairs sono necessari per le tabelle con tasti numerici sequenziali (array). ipairs va in ordine, mentre le coppie possono andare in qualsiasi ordine.

Lua è un linguaggio di programmazione creato da Roberto Ierusalimski, Valdemar Selis e Luis Henrique de Figueiredo. È difficile credere che un linguaggio così popolare possa essere stato creato non da qualche parte nella Silicon Valley o nel MIT, ma nel soleggiato Brasile. In un Paese che sembra essere situato piuttosto lontano dai centri di concentrazione dell'IT. Tuttavia, in una delle divisioni dell'Università Cattolica di Rio de Janeiro sono riusciti a creare un'organizzazione così flessibile e linguaggio potente che ora è ampiamente utilizzato in molti campi.

Tutto è iniziato con lo sviluppo di un linguaggio ausiliario per compagnia petrolifera PETROBRAS. Gli ingegneri petroliferi avevano bisogno di un front-end grafico per elaborare i dati e simulare determinati processi. Inoltre, l'attrezzatura potrebbe essere molto diversa: PC DOS, UNIX, Macintosh, quindi molti linguaggi esistenti (Perl, ad esempio) semplicemente non erano adatti, poiché funzionavano solo su uno di questi sistemi. In questa fase è stato sviluppato un linguaggio chiamato DEL (data entry Language). Nel corso del tempo, le capacità di questo linguaggio sono diventate insufficienti, quindi è stato sviluppato Nuova lingua, chiamato SOL (linguaggio a oggetti semplici). E infine, nel 1993, gli sviluppatori si resero conto che potevano essere combinati in un linguaggio di programmazione a tutti gli effetti, chiamato Lua (in portoghese, Sol è il sole e Lua è la luna). A proposito, nel 1996, Roberto Ierusalimsky e altri autori della lingua decisero di raccontare al mondo il loro lavoro e inviarono un articolo su Lua alla rivista "Software: Practice & Experience". Successivamente, Lua fu pubblicato sulla rivista "Dr. Dobb's", dalla quale ne venne a conoscenza uno dei principali sviluppatori di giochi d'avventura della LucasArts. Decidendo di utilizzare Lua invece del proprio linguaggio di scripting, è rimasto stupito dalla sua semplicità ed efficienza. Di conseguenza, la maggior parte del gioco sviluppato in quel momento fu riscritto in Lua, il che contribuì alla sua crescita in popolarità.

Filosofia della lingua Lua

Soprattutto, l'ideologia di Lua è simile a JavaScript. Ad esempio, entrambi dispongono di un modello prototipo per l'implementazione dell'OOP. Tuttavia, Lua è un linguaggio molto più flessibile e potente. A Lua vengono utilizzati macchina virtuale e un garbage collector, che lo rende più simile a Java, ma ciò non gli impedisce di mantenere la sua semplicità ed eleganza.

Il linguaggio Lua è basato su tabelle, implementate utilizzando array associativi. Una tabella qui significa un insieme di dati in cui ciascuna delle chiavi univoche ha il proprio valore. Utilizzando le tabelle in Lua, puoi rappresentare quasi tutti i dati: array ordinari, set, tabelle di simboli, ecc. Le funzioni possono anche essere descritte nei campi della tabella. In poche parole, se vuoi che un determinato personaggio o oggetto appaia nel tuo gioco preferito, ti basterà conoscerne il nome, inserire nella tabella una funzione per creare questo oggetto e inserire le coordinate del mondo di gioco in cui dovrà apparire .

Vale anche la pena menzionare le metatabelle: tabelle che consentono di modificare il comportamento di altre tabelle. Ad esempio, determinare se l'aggiunta di valori non numerici è accettabile in alcune situazioni. Oppure definire il lancio della “garbage collection” (pulizia della memoria) per qualche evento.

Dove viene utilizzato Lua?

Sebbene Lua sia utilizzato anche in applicazioni industriali, questo linguaggio ha guadagnato la massima popolarità nello sviluppo di giochi. Poiché può essere difficile per gli sviluppatori apportare modifiche al motore di gioco e i progettisti di giochi devono costantemente apportare modifiche al modo in cui funzionano i livelli o i personaggi, Lua può essere semplicemente insostituibile qui. È molto semplice descrivere l'interazione tra i giocatori, gli NPC del programma (contadini in Skyrim) o il comportamento dei boss utilizzando script, che possono poi essere modificati rapidamente senza influenzare il motore.

Il gioco più famoso che ora utilizza Lua, ovviamente, è World of Warcraft. Su di esso è scritta l'interfaccia di WoW (menu, chat, ecc.). Lua è stato utilizzato anche in giochi come Crysis, King's of Bounty, Warhammer, Allods online, CS, Stalker, The Witcher, Sim City, Far Cry, Civilization V, ecc.

Anche i plugin per nmap, wireshark, nginx o i bot per Telegram sono spesso scritti in Lua. Wikipedia prevede inoltre di utilizzare Lua per l'incorporamento in MediaWiki (puoi provarlo nella versione inglese).

Lua è utilizzato anche negli osservatori di ricerca astrofisica e nelle principali università di tutto il mondo (come l'Università Tecnica di Berlino). Lua è diventato anche una sorta di linguaggio di programmazione nazionale nella sua patria ed è utilizzato da molte aziende e centri di ricerca locali nei settori più diffusi. aree diverse attività.

Difficoltà nell'apprendimento di Lua

Lua è abbastanza facile da imparare. Ci sono molte risorse ed esercitazioni video su Internet. Inoltre, la gamification aiuta molto qui. Se il tuo gioco preferito ti consente di creare mod in Lua, prova a sperimentare mondo di gioco nel processo di apprendimento. Ciò renderà l'apprendimento della programmazione divertente e senza sforzo.

Pro/contro di Lua

I vantaggi di Lua includono:

  • buona portabilità. Se è necessario, ad esempio, trasferire un programma da Windows a Linux, ad eccezione di alcune librerie specifiche della piattaforma, il codice non dovrà cambiare molto.
  • la possibilità di aggiungere rapidamente una libreria C a un'applicazione Lua
  • facilità di implementazione del programma
  • sintassi semplice
  • I programmi Lua consumano poca memoria
  • distribuito sotto licenza MIT, quindi può essere utilizzato gratuitamente per progetti aziendali

Tra gli aspetti negativi:

Lua funziona bene quanto un linguaggio di scripting. Ma molto spesso viene utilizzato insieme ad altri linguaggi, sebbene sia abbastanza in grado di eseguire alcune attività in modo indipendente. Pertanto, dovrai conoscerne almeno un altro, ad esempio C o C++. Tuttavia, senza dubbio, la conoscenza di Lua sarà un grande vantaggio per te quando farai domanda per un lavoro come sviluppatore di giochi.

Tecnologie correlate

LuaJIt- Compilatore JIT per Lua. Utilizzato per attività in cui il tempo di esecuzione è fondamentale. Funziona circa sei volte più velocemente dell'interprete standard.

Amore2Dè un framework popolare progettato per lo sviluppo di giochi 2D in Lua.

SDK Corona- un framework per creare applicazioni per iOS e Android utilizzando Lua. Dal 2015 è apparsa una versione gratuita.

Questa serie di lezioni che ho in mente tratterà del linguaggio di programmazione Lua. Cercherò di rendere la presentazione il più accessibile possibile ai principianti e mi concentrerò su di loro. Cioè, i programmatori Lua esperti molto probabilmente non impareranno nulla di nuovo da qui (sono sicuro che troveranno spazio solo per cavilli e commenti, che, in effetti, sono anche benvenuti da parte loro), ma se non hai hai una vasta esperienza di programmazione alle spalle, quindi penso che porterai via qualcosa.

L'intera serie non obbedirà a nessun sistema. Le lezioni introdurranno in sequenza una serie di costrutti linguistici, in modo che alla terza o quarta lezione sarai già in grado di scrivere i tuoi programmi. Il mio obiettivo è spingerti a farlo autodidatta lingua, ti aiuta a sentirla e non a spiegarla dalla A alla Z: se vuoi padroneggiare completamente la lingua, leggi guida di riferimento(che, anche se male, è tradotto in russo: http://www.lua.ru/doc/). Prima passi dalle lezioni "per manichini" su Internet allo studio del libro di consultazione, meglio è.

Se qualcosa non è chiaro, assicurati di fare una domanda nei commenti e io e gli altri partecipanti cercheremo di aiutarti.

Lua è un linguaggio di programmazione popolare, facile da imparare, incorporato, interpretato e tipizzato dinamicamente scopo generale. No, non devi capire la metà delle parole dette nella frase precedente: l'importante è sapere che è popolare e semplice. A proposito, ha guadagnato popolarità grazie alla sua semplicità e alle dimensioni ridotte della distribuzione (circa 150 kilobyte). Sono supportati gli script Lua grande quantità applicazioni, compresi i giochi. World of Warcraft e S.T.A.L.K.E.R. utilizzare la lingua Lua. Il mio motore di gioco preferito ti consentirà di creare facilmente una varietà di giochi utilizzando Lua. Come puoi vedere, Lua ti apre molti orizzonti!

Prima di iniziare, dovresti impostare un ambiente di programmazione: cioè trovare un programma che accetti il ​​codice Lua che scrivi e lo esegua: un interprete. Ci sono tre opzioni:

1. Scarica la distribuzione ufficiale Lua da uno dei siti che li fornisce.

Lua può essere scaricato solo dal sito ufficiale codici sorgente interprete. Tuttavia, dopo aver studiato http://lua.org/download.html nella sezione Binari, potresti trovare collegamenti a siti con file eseguibili per Windows. Uno di loro: . Scarica uno degli archivi da lì (corrispondente alla tua piattaforma: Win32 o Win64) e decomprimilo da qualche parte, preferibilmente in una directory con un percorso breve: come C:\lua. D'ora in poi presumo che tu stia utilizzando Windows e che il tuo interprete sia lì.

Utenti dei sistemi operativi su Basato su Linux in questo senso è più semplice: basta utilizzare un gestore di pacchetti e installare Lua dai repository. Su Debian e Ubuntu questo viene fatto con il comando apt-get install lua, e su Fedora, Red Hat e distribuzioni derivate - yum install lua. Tuttavia, non fidarti ciecamente di me e fai riferimento al tuo libro di consultazione. sistema operativo per scoprire esattamente come è possibile farlo per te.

2. Utilizza un interprete online.

Trovato su http://www.lua.org/demo.html. All'inizio potrebbe essere sufficiente, ma poi, quando toccheremo i moduli, sarai costretto a utilizzare la versione offline. Usare l'interprete online è molto semplice: inserisci il tuo programma nella casella di testo e clicca sul pulsante Esegui. Il programma verrà eseguito e la finestra di output visualizzerà l'output del programma, nonché le segnalazioni di errori, se presenti, effettuate.

3. Utilizzare un IDE.

Ad esempio ZeroBrane Studio: http://studio.zerobrane.com/. Ce ne sono altri: cerca su Internet.

Attualmente sono in uso due versioni leggermente diverse di Lua: 5.1 e 5.2. Mi concentrerò su quelli più importanti ultima versione- versione 5.2, ma lo segnalerò sicuramente differenze importanti tra esso e 5.1, poiché anche quest'ultimo è abbastanza comune. A proposito, Lua 5.1 esegue il codice una volta e mezza più velocemente di Lua 5.2, solo perché tu lo sappia.

=== Lezione n. 1 ===

Quindi, cominciamo. Crea in isolamento da file estranei cartella main.lua e scrivere al suo interno:

200?"200px":""+(this.scrollHeight+5)+"px");">
-- main.lua --
stampa(" Ciao mondo!")

Allora corri dentro riga di comando(non dimenticare di passare alla directory main.lua utilizzando il comando cd):

200?"200px":""+(this.scrollHeight+5)+"px");">
> C:\lua\lua.exe main.lua

L'interprete Lua risponderà con:

200?"200px":""+(this.scrollHeight+5)+"px");">
Ciao mondo!

In linea di principio, questo era prevedibile. Nel programma abbiamo chiamato la funzione print. La funzione di stampa accetta numero arbitrario parametri e li visualizza in sequenza sullo schermo. IN in questo esempio gli abbiamo passato la stringa (catena di caratteri) "Hello world!". Puoi passarlo altrettanto facilmente come parametro:

200?"200px":""+(this.scrollHeight+5)+"px");">
print(8) -- alcuni numero decimale
-- restituirà: 8

Print(0xDEADBEEF) -- numero esadecimale
-- uscirà: 3735928559

Print("0xDEADBEEF") - ma questa è una stringa, non un numero! Vedi le virgolette?
-- restituirà: 0xDEADBEEF

Print(1.35e-4) -- numero in virgola mobile ( un numero frazionario)
-- Produrrà 0,000135. 1.35e-4 va inteso come "1.35 volte
- per dieci alla meno quarta potenza", se qualcuno non lo sa.

Print((198*99)-3*500 + 14/88) -- espressione
-- Stampa il valore dell'espressione: 18102.159090909. Non è una cattiva alternativa
-- calcolatrice da tavolo!

Print(198/7, "fertilizzante", 2^9) -- diversi parametri arbitrari
-- una specie di. Verranno visualizzati i valori di ciascuno di essi, separati da segni
-- schede:
-- 28.285714285714 fertilizzante 512
-- Tieni presente che le virgolette relative al fertilizzante non vengono visualizzate!

Print(1.35) -- due numeri, non la frazione decimale 1.35!
-- Per separare i parametri viene utilizzata una virgola.
-- Verrà restituito:
-- 1 35

Il segno "--" non è solo un'imitazione del segno del trattino, che viene inserito per bellezza. Il segno "--" in Lua contrassegna i commenti: suggerimenti per il programmatore che vengono ignorati dall'interprete e intesi a rendere il codice più semplice da comprendere. Puoi provare a scrivere nel programma:

200?"200px":""+(this.scrollHeight+5)+"px");">
-- print("niente")

L'interprete penserà che si tratti di un commento e non eseguirà l'istruzione.

Nota per la padrona di casa: se volete stampare una sola riga potete scrivere la chiamata di stampa così, senza parentesi:

200?"200px":""+(this.scrollHeight+5)+"px");">
print "Solo una stringa"

La comodità è certamente discutibile: basti tenere presente che ciò è possibile. Tuttavia, tali chiamate sono inaccettabili:

200?"200px":""+(this.scrollHeight+5)+"px");">
print 2 non funzionerà, 2 non è una stringa.
print 2*2 + 6 -- non funzionerà comunque

Str = "stringa!!" -- assegnato il valore "string!!" alla variabile str
- leggi le variabili di seguito
print str - non funzionerà neanche.

In ciascuno dei casi sopra indicati, il programma semplicemente si rifiuterà di funzionare. Pertanto, in una chiamata "senza parentesi", il nome della funzione può essere seguito solo da una stringa letterale (ovvero, una sequenza di caratteri racchiusa tra virgolette) e nient'altro. Parlerò di questa funzionalità un po' più in dettaglio in futuro, ma per ora è sufficiente.

In qualsiasi buona lingua Nella programmazione è possibile dichiarare delle variabili: piccoli contenitori che possono contenere alcuni dati. In Lua questo viene fatto in questo modo:

200?"200px":""+(this.scrollHeight+5)+"px");">
<имя_переменной> = <выражение>

Per esempio:

200?"200px":""+(this.scrollHeight+5)+"px");">
star = 8 -- Ora la variabile star memorizza il numero 8
wars = "owl" -- Nella variabile wars - la stringa "owl"
jedi = 42/2 -- Nella variabile jedi - il numero 21
luke = stella*jedi -- Nella variabile luke - il numero 168 (sì, 21 volte 8)

È inoltre possibile visualizzare i valori delle variabili e delle espressioni con esse:

200?"200px":""+(this.scrollHeight+5)+"px");">
print(stella, guerre, jedi, stella-jedi+luca)
-- Verrà restituito:
--8 gufo 21 181

Basta non provare ad aggiungere le variabili star e wars: provare ad aggiungere 8 a "gufo" non ti servirà a niente!

Come avrai notato, il nome di una variabile può essere praticamente qualsiasi cosa: l'importante è che non inizi con un numero. Seriamente, puoi anche dichiarare una variabile chiamata print, e poi la funzione print smetterà di funzionare perché il nome print si riferirà alla variabile appena dichiarata. Ma c'è un gruppo di parole che non possono essere utilizzate come nomi di variabili: si tratta di parole chiave linguistiche che non abbiamo ancora conosciuto, ma che vale sicuramente la pena dare un'occhiata:

200?"200px":""+(this.scrollHeight+5)+"px");">
e spezza fai altro se finisce
false per la funzione goto se in
locale nil no o ripetere il ritorno
quindi vero fino a quando

Creando una variabile con uno di questi nomi, causerai un errore nel programma e sicuramente non funzionerà. Nota: in Lua 5.1 parola chiave non c'è goto e puoi chiamare una variabile in questo modo, ma è meglio non farlo.
Tieni inoltre presente che i nomi delle variabili fanno distinzione tra maiuscole e minuscole. Ciò significa che foo, foo, fOO e FOO sono quattro variabili diverse, quindi se scrivi il nome di qualche variabile lettere minuscole, e successivamente lo scrivo in maiuscolo, molto probabilmente il programma non funzionerà correttamente.

E ora solo punto importante: cosa succede se, accidentalmente o intenzionalmente, fai riferimento ad una variabile inesistente? Nella maggior parte delle altre lingue ciò causerà un errore, ma in Lua questa situazione è accettabile. Viene trattata come se la variabile inesistente esiste effettivamente, ma il suo valore lo è zero. zero- ricorda questa parola! è un tipo di valore speciale in Lua che significa "niente". Non zero e non una stringa vuota (una stringa come "" - prova a visualizzarla sullo schermo), ma semplicemente niente. Confrontalo con questo modello: ci sono due persone, una di loro ha un conto bancario ma non ha soldi, e l'altra non ha alcun conto bancario. In termini Lua, si considererà che il primo abbia $ 0 sul suo conto e il secondo abbia $ 0 sul suo conto. zero. E nemmeno dollari, ma semplicemente zero. Spero di non averti confuso.

Prova, ad esempio, a eseguire questo programma:

200?"200px":""+(this.scrollHeight+5)+"px");">
-- main.lua --
foo = "barra"
print(foo, baz)
-- Verrà restituito:
--bar zero

Pertanto, la variabile baz, che non esiste ma si pensa esista, ha il valore nil, e la funzione print lo capisce e la stampa sullo schermo come stringa "nil". Lua sì buon metodo verificare l'esistenza di una variabile: se il valore della variabile non è zero, allora viene almeno dichiarato. D'altra parte, puoi dichiarare esplicitamente una variabile uguale a nil:

200?"200px":""+(this.scrollHeight+5)+"px");">
cool_var = zero

Questo può essere fatto e, anche se a prima vista sembra stupido, a volte viene fatto. Nelle lezioni successive imparerai chi e perché, e probabilmente inizierai a fare lo stesso. A volte, ovviamente.
Fai attenzione a nil: puoi stampare nil, ma fai delle cose con esso operazioni aritmeticheè vietato! Cioè, se riesci a farla franca con print(nil), un costrutto come 99+nil genererà un errore, anche se volevi che 99+nil fosse uguale a 99. Credimi, sono rimasto sconvolto quando l'ho scoperto anch'io.

Riepilogo:
1. Abbiamo imparato a conoscere la funzione print, cosa può fare e come chiamarla correttamente senza parentesi.
2. Abbiamo imparato come dichiarare le variabili, come valutare le espressioni (anche se solo un po'), quali nomi possono avere le variabili.
3. Abbiamo appreso del nulla, ci siamo impregnati del suo mistero mistico e abbiamo acquisito la fiducia che in futuro avremo molto a che fare con esso.

Per coloro che sono curiosi e vogliono rafforzare le proprie conoscenze, offro semplici esercizi, cosa che non devi fare se ti senti già abbastanza competente:
1. Scrivi un programma che stampi il ritornello della tua canzone preferita.
2. Prova a derivare i valori delle seguenti espressioni. Cerca di capire perché alcuni funzionano e altri no. Scopri quali errori sono causati da espressioni che non funzionano.

200?"200px":""+(this.scrollHeight+5)+"px");">
2 + "corda";
6 + "14";
"scatola" - "vox";
1 * "11b"
"148" * "1e6";


3. Scrivere un programma che ne scambi due variabili con valori. Questo è:

200?"200px":""+(this.scrollHeight+5)+"px");">
a = 6502
b = 8086


Rendi a uguale a 8086 e b uguale a 6502. Per fare ciò, crea una terza variabile e apporta alcune semplici riorganizzazioni. Assicurati che il problema sia risolto correttamente chiamando print(a,b) prima dello scambio e print(a,b) dopo.

I migliori articoli sull'argomento