Valutazione short-circuit
Fa parte della sezione Fondamenti del percorso Lua di Coddy. Lezione 23 di 90.
Quando Lua valuta gli operatori and e or, applica una regola chiamata valutazione in cortocircuito. Ciò significa che Lua interrompe la valutazione non appena conosce il risultato finale, saltando potenzialmente intere parti dell'espressione.
Per l'operatore and, se la prima condizione è false, Lua sa immediatamente che l'intera espressione sarà false senza controllare la seconda condizione:
playerAlive = false
hasWeapon = true
canFight = playerAlive and hasWeapon
-- Lua controlla solo playerAlive (false) e non valuta mai hasWeaponAnalogamente, per l'operatore or, se la prima condizione è true, Lua sa che il risultato sarà true e salta la seconda condizione:
hasKey = true
hasPassword = false
canEnter = hasKey or hasPassword
-- Lua controlla solo hasKey (true) e non valuta mai hasPasswordLa valutazione con cortocircuito non serve solo a risparmiare lavoro: determina quale codice viene eseguito. In questo caso, il secondo controllo è sicuro solo perché Lua lo salta quando lives è nil:
lives = nil -- nessun valore per ora
canPlay = lives ~= nil and lives > 0
print(canPlay) -- falseSenza la valutazione con cortocircuito, lives > 0 interromperebbe il programma con un errore, perché nil non può essere confrontato con un numero. Lo userai spesso: controlla che un valore esista prima di usarlo.
Provalo tu
Questa lezione non include una sfida di codice.
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
4Operatori 2: relazionali e logici
Operatori di uguaglianzaOperatori relazionaliL'operatore 'and'L'operatore 'or'L'operatore 'not'Valutazione short-circuitValori truthy e falsyRiepilogo: logica semplice7Logica condizionale di base
L'istruzione if-thenL'istruzione if-then-elseL'istruzione elseifRiepilogo - Il forziere del tesoro2Variabili e tipi di dati
Che cos'è una variabile?NumeriStringheValori booleaniIl valore 'nil'La funzione type()Convenzioni di denominazioneRiepilogo - Profilo del personaggio5Output di base
Stampare valori letteraliStampare variabiliStampare più valoriCombinare stringhe e variabiliLa funzione tostring()InputCastRipasso - Rapporto di statoRipasso - Fino a 1208Basi della manipolazione delle stringhe
string.len()string.upper & string.lowerstring.sub()string.rep()string.find()Riepilogo - Formatta il nome utente3Operatori 1: aritmetica e concatenazione
Operatori aritmeticiOperatore moduloOperatore di elevamento a potenzaConcatenazione di stringhePrecedenza degli operatoriRipasso: calcoli semplici6Progetto: visualizzazione delle statistiche del personaggio
Messaggio di benvenutoDichiara le statistiche del personaggio9Funzioni: nozioni di base
Dichiarare una funzioneChiamare una funzioneFunzioni con parametriFunzioni con più parametriL'istruzione 'return'Ripasso - Calcolatore di areaEsercitati da solo: Compilatore Lua online