Lolcode - Operatoren

Operatoren spielen eine wichtige Rolle bei der Ausführung verschiedener Operationen an Variablen. Dieses Kapitel enthält verschiedene Operatoren in LOLCODE und deren Verwendung.

Betreiber

Mathematische Operatoren hängen von einer Präfixnotation ab, dh der Notation, die vor dem Operanden steht. Wenn allen Operatoren die Anzahl der Argumente oder Operanden bekannt ist, sind keine Gruppierungsmarkierungen erforderlich. In Fällen, in denen Operatoren keine festen Argumente oder Operanden haben, wird die Operation mit MKAY geschlossen.

Ein MKAY darf nicht verwendet werden, wenn es mit dem Ende der Anweisung übereinstimmt. In solchen Fällen sollte das Schlüsselwort EOL verwendet werden. Verwenden Sie die folgende Syntax, um unäre mathematische Operatoren zu verwenden:

<operator> <expression>

Das Schlüsselwort AN kann optional verwendet werden, um Argumente zu trennen und eine einzelne Operation auf mehr als einen Operanden anzuwenden, sodass ein binärer Operatorausdruck die folgende Syntax hat:

<operator> <expression1> AN <expression2>

Jeder Ausdruck, der einen Operator mit unendlich vielen Argumenten enthält, kann mit der folgenden Syntax ausgedrückt werden:

<operator> <expression1> [[AN <expression2>] AN <expression3> ...] MKAY

Mathematik

Im Folgenden sind die grundlegenden mathematischen Operationen in LOLCODE aufgeführt:

SUM OF <a> AN <b>      BTW This is a plus + operator
DIFF OF <a> AN <n>     BTW This is a minus - operator
PRODUKT OF <a> AN <n>  BTW This is a multiply operator *
QUOSHUNT OF <a> AN <n> BTW This is a divide operator
MOD OF <a> AN <n>      BTW This is a modulo operator
BIGGR OF <a> AN <n>    BTW This is a max operator
SMALLR OF <a> AN <n>   BTW This is a min operator

<a> und <b> können oben jeweils eindeutige Ausdrücke sein, sodass mathematische Operatoren unbegrenzt verschachtelt und gruppiert werden können.

Die Mathematik wird unter Berücksichtigung von Argumenten als ganzzahlige Mathematik in Gegenwart von zwei NUMBRs ausgeführt. Wenn jedoch einer der Ausdrücke NUMBAR ist, werden Operationen als Gleitkommaoperationen betrachtet.

Beispiel

HAI 1.2
   I HAS A m ITZ 4
   I HAS A n ITZ 2
VISIBLE SUM OF m AN n      BTW +
VISIBLE DIFF OF m AN n     BTW -
VISIBLE PRODUKT OF m AN n  BTW *
VISIBLE QUOSHUNT OF m AN n BTW /
VISIBLE MOD OF m AN n      BTW modulo
VISIBLE BIGGR OF m AN n    BTW max
VISIBLE SMALLR OF m AN n   BTW min
KTHXBYE

Der obige Code erzeugt die folgende Ausgabe, wenn Sie ihn ausführen -

sh-
4.3$ lci main.lo
6
2
8
2
0
4
2

Wichtige Punkte -

Berücksichtigen Sie die folgenden wichtigen Punkte im Zusammenhang mit der Arbeit mit mathematischen Operatoren in LOLCODE−

  • Wenn eines oder beide Argumente in einem Ausdruck YARN sind, werden sie als NUMBARs behandelt.

  • Wenn eines der Argumente nicht sicher intern in einen numerischen Typ umgewandelt werden kann, schlägt dies mit einem Fehler fehl

Boolescher Wert

Boolesche Operatoren werden auf Werte angewendet, die wahr oder falsch sein können. Boolesche Operatoren, die an TROOFs arbeiten, sind wie folgt:

BOTH OF <m> AN <n>             BTW its and operation: WIN if m = WIN and n = WIN
EITHER OF <m> AN <n>           BTW its or operation: FAIL iff m = FAIL, n = FAIL
WON OF <m> AN <n>              BTW its xor operation: FAIL if m = n
NOT <m>                        BTW its an unary negation: WIN if m = FAIL
ALL OF <m> AN <n> ... MKAY     BTW it will take infinite arguments and apply AND
ANY OF <m> AN <n> ... MKAY     BTW it will take infinite arguments and apply OR.

Bitte beachten Sie, dass <m> und <n> in der obigen Ausdruckssyntax automatisch als TROOF-Werte umgewandelt werden, wenn sie nicht bereits TROOF-Werte sind.

Vergleich

Wenn Sie zwei oder mehr Operanden in LOLCODE vergleichen möchten, können Sie dies mit einer der folgenden Methoden tun:

Methode 1

Sie können zwei binäre Operanden mit Gleichheitsoperatoren vergleichen. Die Syntax wird unten gezeigt -

BOTH SAEM <m> AN <n>   BTW this will return WIN if m is equal to n
DIFFRINT <m> AN <n>    BTW this will return WIN if m is not equal to n

Methode 2

Sie können vergleichen, ob beide Werte vom Typ NUMBRs sind. Denken Sie daran, dass wenn einer der Werte NUMBARs sind, diese als Gleitkommawerte verglichen werden.

Methode 3

Sie können den Vergleich auch mit den Operatoren Minimum und Maximum durchführen. Die Syntax wird unten gezeigt -

BOTH SAEM <m>   AN BIGGR OF <m> AN <n>

BOTH SAEM <m>  AN SMALLR OF <m> AN <n>
DIFFRINT <m>  AN SMALLR OF <m> AN <n>
DIFFRINT <m> AN BIGGR OF <m> AN <n>

Example

HAI 1.2
I HAS A VAR11 ITZ 7
BOTH SAEM VAR11 SMALLR OF VAR11 AN 8, O RLY?
YA RLY
VISIBLE "TRUE"
NO WAI
VISIBLE "FALSE"
OIC
KTHXBYE

Sie können die folgende Ausgabe sehen, wenn Sie den angegebenen Code ausführen -

sh-
4.3$ lci main.lo

TRUE

Verkettung von Werten

Mit LOLCODE können Sie mit dem Operator SMOOSH… MKAY unendlich viele YARNs explizit verketten. Zur Verkettung können mehrere Argumente mit dem getrennt werdenAN Operator.

Beispiel

HAI 1.2
I HAS A VAR1 ITZ A YARN
VAR1 R "TRUE"

I HAS A VAR2 ITZ A YARN
VAR2 R "ANOTHER TRUE"

I HAS A VAR3 ITZ A YARN
VAR3 R "ONE MORE TRUE"
VISIBLE SMOOSH VAR1 " " VAR3 " " VAR2 MKAY
KTHXBYE

Der oben angegebene Code führt bei der Ausführung zu folgendem Ergebnis:

sh-
4.3$ lci main.lo

TRUE ONE MORE TRUE ANOTHER TRUE

Typ Casting

Operatoren, die an bestimmten Typen arbeiten, wandeln implizit die Werte eines Typs um oder konvertieren sie sicher in einen anderen Typ. Wenn der Wert nicht sicher in einen anderen Typ konvertiert werden kann, führt dies zu einem Fehler.

Der Wert eines Ausdrucks kann mit dem binären MAEK-Operator explizit umgewandelt oder in einen anderen Typ konvertiert werden. Die Syntax von MAEK Operator lautet -

MAEK <expression> A <type>

Dabei kann <Typ> TROOF, YARN, NUMBR, NUMBAR oder NOOB sein.

Um eine Variable explizit in einen anderen Typ umzuwandeln, kann eine normale Zuweisungsanweisung mit dem MAEK-Operator verwendet werden, oder eine Umwandlungszuweisungsanweisung kann wie folgt verwendet werden:

<Any_variable> IS NOW A <type>  BTW this code will be equal to
<Any_variable> R MAEK <variable> A <type>

Beispiel

HAI 1.2
I HAS A food ITZ "111.00033"
VISIBLE food

BTW this is how we do type casting
MAEK food A NUMBAR
VISIBLE food
KTHXBYE

Der obige Code erzeugt die folgende Ausgabe -

sh-4.3$ lci main.lo
111.00033
111.00033