Lolcode-operators
Lolcode-オペレーター
演算子は、変数に対してさまざまな操作を実行するために重要な役割を果たします。 この章では、LOLCODEのさまざまな演算子とその使用法について説明します。
オペレータ
数学演算子はプレフィックス表記に依存しています。 オペランドの前にある表記。 すべての演算子に既知の数の引数またはオペランドがある場合、グループ化マーカーは不要です。 演算子に固定引数またはオペランドがない場合、操作はMKAYで閉じられます。
MKAYは、ステートメントの終わりと一致する場合は使用できません。 そのような場合、EOLキーワードを使用する必要があります。 単項数学演算子を使用するには、次の構文を使用します-
<operator> <expression>
ANキーワードは、オプションで引数を分離し、複数のオペランドに単一の操作を適用するために使用することができますので、二項演算子式は次の構文を持っています-
<operator> <expression1> AN <expression2>
引数の数が無限である演算子を含む式は、次の構文で表現できます-
<operator> <expression1> [[AN <expression2>] AN <expression3> ...] MKAY
Math
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>
例
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