2016-02-21 16 views

risposta

4

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.

9

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.

5

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.

Problemi correlati