Sto navigando del codice Lua su Github dove vedo diverse istruzioni come return Memory.value("game", "textbox") == 1
.
Questo "uguale" return if value ==1
o if value == 1 return true, else return false
?Dichiarazione di ritorno strana in Lua
risposta
return
è una parola chiave e non ha una condizione come argomento, piuttosto un'espressione. Se si specifica esplicitamente return
, esso ritornerà. Tuttavia valuta gli argomenti, ovvero quando entra in gioco l'aspetto logico.
ho intenzione di entrare nel aspetto logico.
==
è un operatore di confronto, controlla se i suoi argomenti sono uguali tra loro. Se è così, ritorna vero. Pertanto, se utilizzato in un valore return
, return
verrà valutato e restituito true se sono uguali.
Questo non è limitato a ==
, eventuali operatori di confronto (~=
, <=
, >=
, <
, >
) farà la stessa cosa.
and
, or
funziona in modo leggermente diverso. Non restituiscono vero/falso.Ecco come si comportano:
return a and b
: questa valuta le fondamentalmente per se a è vero (né falso né nullo) di ritorno b
return a or b
: Questo si traduce in sostanza a * se a è vero (né falso né nil) restituire una, altrimenti restituisce b
Così come si potrebbe immaginare, qualcosa come return a and b or c
significa
if a then
if b then
return b
else
return c
end
else
return c
end
Così return a and b or c
è l'equivalente di return ((a and b) or c)
E per il bene di completamento, not
semplicemente valuta e inverte, quindi se è falso/nil restituisce vero, altrimenti restituisce false.
L'istruzione return
prevede un'espressione come argomento. Ciò significa che se si scrive return expression
, il valore valutato di expression
deve essere restituito.
In questo caso specifico, Memory.value("game", "textbox") == 1
è un'espressione che restituisce true
se il valore restituito Memory.value("game", "textbox")
uguale 1
. Se Memory.value("game", "textbox")
doveva essere un valore diverso da quello 1
, l'espressione sarebbe valutato come false
, che è ciò che la dichiarazione return
sarebbe tornato.
si potrebbe facilmente scrivere il dato economico come
if (Memory.value("game", "textbox") == 1) then
return true
else
return false
end
Ma poiché questo è logicamente ridondante, si vorrebbe evitare di scrivere questo codice e di utilizzare invece l'uno di linea che hai fornito.
La tua domanda dice che si sa Perl. No, non è come Perl, dove la condizione di "se" e dichiarazioni simili possono seguire la dichiarazione.
return
si aspetta un elenco di zero o più valori di ritorno. Una funzione può restituire qualsiasi lista di lunghezza. Può anche avere un numero qualsiasi di dichiarazioni di reso e non è necessario restituire elenchi della stessa lunghezza o significato. Quindi, la documentazione della funzione è essenziale. Vedi load come esempio.
Questa dichiarazione restituisce true
o false
.
tratta il valore indirizzato dalla memoria come una tabella, gli indici con "valore", chiede il valore risultante come una funzione con due argomenti stringa e confronta il risultato della chiamata di funzione con il valore 1.
- 1. Dichiarazione di ritorno
- 2. Dichiarazione di variabili e scope per Lua
- 3. dichiarazione di ritorno prima infine
- 4. DataReader Ritorno da DataLayer in Uso dichiarazione
- 5. Lua - Come posso ottenere un ritorno?
- 6. constexpr - perché solo una dichiarazione di ritorno?
- 7. comprensione Doppia dichiarazione di ritorno è Javascript
- 8. Che cosa fa esattamente una dichiarazione di ritorno in C#?
- 9. SQL ritorno dati di colonna condizionale in una dichiarazione prescelta
- 10. Codice indentazione Lua in Lua
- 11. Ho bisogno di una dichiarazione di ritorno dopo un'eccezione Python?
- 12. Strana margine in WKWebView
- 13. AccessViolationException gettato in strana situazione
- 14. Ci sono effetti collaterali di ritorno da una dichiarazione using()?
- 15. try/finally senza catch con dichiarazione di ritorno?
- 16. Dichiarazione implicita di luaL_openlibs
- 17. perl assegnazione a hash in subroutine return diventa strana
- 18. JPA con Hibernate 3.6.8.Final, PostgresSQL 9.1, SQLGrammarException - problema di configurazione? Strana dichiarazione SQL
- 19. Uscita console strana in TortoiseHG
- 20. Come incorporare Lua in Python?
- 21. Artefatti quadrati di luce strana in OpenGL
- 22. Strana differenza di prestazioni in C++?
- 23. Lua, cos'è Lua?
- 24. Strana convalida Javascript in dreamweaver CC
- 25. Strana implementazione di Guava LongMath.checkedAdd
- 26. Concatenazione di stringhe in Lua
- 27. Kafka Java SimpleConsumer strana codifica
- 28. Omettendo un comportamento non definito di dichiarazione di ritorno in C89 (noto anche come ANSI C)?
- 29. C#, ottimizzazione strana
- 30. editfield altezza strana