Lolcode - 運算子



運算子在對變數執行各種操作中起著重要作用。本章介紹 LOLCODE 中的各種運算子及其用法。

運算子

數學運算子依賴於字首表示法,即出現在運算元之前的表示法。當所有運算子都有已知數量的引數或運算元時,不需要分組標記。在運算子沒有固定引數或運算元的情況下,操作以 MKAY 結束。

如果 MKAY 與語句的結尾重合,則可能不會使用。在這種情況下,應使用 EOL 關鍵字。要使用一元數學運算子,請使用以下語法:

<operator> <expression>

AN 關鍵字可以可選地用於分隔引數,並在多個運算元上應用單個操作,因此二元運算子表示式具有以下語法:

<operator> <expression1> AN <expression2>

任何包含具有無限多個引數的運算子的表示式都可以用以下語法表示:

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

數學運算

以下是 LOLCODE 中的基本數學運算:

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> 和 <b> 可以是唯一的表示式,因此數學運算子可以無限巢狀和分組。

如果存在兩個 NUMBR,則數學運算將引數視為整數數學運算,但如果任一表達式為 NUMBAR,則運算將視為浮點運算。

示例

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

當您執行以上程式碼時,將產生以下輸出:

sh-
4.3$ lci main.lo

6

2

8

2

0

4

2

重要事項:

請考慮以下與在 LOLCODE 中使用數學運算子相關的重要事項:

  • 如果表示式中一個或兩個引數為 YARN,則將其視為 NUMBAR。

  • 如果任何引數無法安全地內部轉換為數值型別,則會發生錯誤。

布林運算

布林運算子應用於可能為真或假的值。作用於 TROOF 的布林運算子如下:

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.

請注意,如果表示式語法中的 <m> 和 <n> 不是 TROOF 值,則會自動轉換為 TROOF 值。

比較

當您想要在 LOLCODE 中比較兩個或多個運算元時,您可以透過以下任何一種方法進行:

方法 1

您可以使用等號運算子比較兩個二元運算元。語法如下所示:

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

方法 2

您可以比較兩個值是否都是 NUMBR 型別。請記住,如果任一值為 NUMBAR,則將其視為浮點值進行比較。

方法 3

您還可以使用最小值和最大值運算子執行比較。語法如下所示:

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>

示例

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
KTHXBY

執行給定程式碼時,您可以看到以下輸出:

sh-
4.3$ lci main.lo

TRUE

值的連線

LOLCODE 允許您使用 SMOOSH…MKAY 運算子顯式連線無限多個 YARN。對於連線,可以使用 AN 運算子分隔多個引數。

示例

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

執行以上程式碼將產生以下結果:

sh-
4.3$ lci main.lo

TRUE ONE MORE TRUE ANOTHER TRUE

型別轉換

作用於特定型別的運算子會隱式轉換或安全地將一種型別的值轉換為另一種型別。如果值無法安全地轉換為其他型別,則會導致錯誤。

可以使用二元 MAEK 運算子顯式轉換表示式的值到其他型別。MAEK 運算子的語法為:

MAEK <expression> A <type>

其中,<type> 可以是 TROOF、YARN、NUMBR、NUMBAR 或 NOOB 之一。

要將變數顯式轉換為其他型別,可以使用帶有 MAEK 運算子的普通賦值語句,或者可以使用以下型別的強制轉換賦值語句:

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

示例

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

以上程式碼將產生以下輸出:

sh-4.3$ lci main.lo
111.00033
廣告

© . All rights reserved.