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>はそれぞれ上記の一意の式である可能性があるため、数学演算子はネストして無期限にグループ化できます。

数学は、2つの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として扱われます。

  • 引数のいずれかを内部で数値型に安全にキャストできない場合、エラーで失敗します

ブール値

ブール演算子は、trueまたはfalseの値に適用されます。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の2つ以上のオペランドを比較する場合は、次のいずれかの方法で比較できます。

方法1

等式演算子を使用して、2つのバイナリオペランドを比較できます。構文を以下に示します-

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>

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

指定されたコードを実行すると、次の出力が表示されます-

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
111.00033