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