Ich durchstöbere einen Lua-Code auf Github, wo ich verschiedene Aussagen wie return Memory.value("game", "textbox") == 1
sehe.
Ist dies "gleich" return if value ==1
oder if value == 1 return true, else return false
?
return
ist ein Schlüsselwort und hat keine Bedingung als Argument, sondern als Ausdruck. Wenn Sie return
explizit angeben, wird es zurückgegeben. Es wertet jedoch seine Argumente aus, wenn der logische Aspekt ins Spiel kommt.
Ich werde in den logischen Aspekt einsteigen.
==
ist ein Vergleichsoperator, der prüft, ob Argumente gleich sind . Wenn ja, ist es wahr. Wenn% return
in return
verwendet wird, wird ==
ausgewertet und gibt true zurück, wenn sie gleich sind.
Dies ist nicht beschränkt auf ~=
, beliebige Vergleichsoperatoren ( <=
, >=
, <
, >
, and
) machen das genau gleiche Sache .
or
, return a and b
funktioniert jedoch etwas anders. Sie geben nicht wahr / falsch zurück. So verhalten sie sich:
return a or b
: Dies wird im Grunde zu ausgewertet, wenn a wahr ist (weder false noch nil) return b
return a and b or c
: Dies bedeutet im Grunde genommen, dass * wenn a wahr ist (weder falsch noch nil) a zurückgibt, andernfalls return b
Wie Sie sich vorstellen können, bedeutet etwas wie return a and b or c
So return ((a and b) or c)
ist das Äquivalent zu not
Aus Gründen der Vervollständigung wertet %code% simply es aus und invertiert es . Wenn es also false / nil ist, gibt es true zurück, andernfalls false.
Die return
-Anweisung erwartet einen Ausdruck als Argument. Das heißt, wenn Sie return expression
schreiben, soll der bewertete Wert von expression
zurückgegeben werden.
In diesem speziellen Fall ist Memory.value("game", "textbox") == 1
ein Ausdruck, der als true
ausgewertet wird, wenn der Rückgabewert von Memory.value("game", "textbox")
gleich 1
ist. Wenn Memory.value("game", "textbox")
ein anderer Wert als 1
wäre, würde der Ausdruck als false
ausgewertet werden, was die return
-Anweisung zurückgeben würde.
Sie könnten die angegebene Anweisung einfach als
schreiben %Vor%Da dies jedoch logisch redundant ist, sollten Sie vermeiden, diesen Code zu schreiben und stattdessen den von Ihnen bereitgestellten Liner verwenden.
Ihre Frage besagt, dass Sie Perl kennen. Nein, es ist nicht wie Perl, wo die Bedingung von 'if' und ähnliche Aussagen der Aussage folgen können.
return
erwartet eine Liste von null oder mehr Rückgabewerten. Eine Funktion kann eine beliebige Längenliste zurückgeben. Es kann auch eine beliebige Anzahl von return-Anweisungen enthalten und sie müssen keine Listen mit der gleichen Länge oder Bedeutung zurückgeben. Also, die Dokumentation der Funktion ist wichtig. Ein Beispiel hierfür finden Sie unter laden .
Diese Anweisung gibt true
oder false
zurück.
Er behandelt den von Memory referenzierten Wert als Tabelle, indiziert ihn mit "value", ruft den resultierenden Wert als Funktion mit zwei String-Argumenten auf und vergleicht das Ergebnis des Funktionsaufrufs mit dem Wert 1.
Tags und Links lua