Lolcode-ステートメントとフロー制御
LOLCODEを使用すると、さまざまなステートメントを介してプログラムのフローを制御できます。この章では、LOLCODEで使用できるさまざまなタイプのステートメントについて説明します。
式ステートメント
割り当てのない式、つまり単に数学演算や関数を呼び出すことは、LOLCODEの正当なステートメントです。式が評価されると、その最終値は一時変数ITに配置されます。ITの価値はローカルスコープに残り、次に式に置き換えられるまで存在します。
割り当てステートメント
代入ステートメントは、任意の式の出力を特定の変数に割り当てるために使用されます。それらは一般的に次の形式です-
<any_variable> <assignment operator> <any expression>
割り当てられる前であっても、式で変数を使用できることに注意してください。
条件文
If-Thenステートメント
if-thenステートメントは、IT変数を操作する非常に単純な操作です。これは、CやJavaなどの他のプログラミング言語のif–elseステートメントに似ています。
if–thenステートメントを適用するための4つのキーワードがあります。
- O RLY?
- YARLY
- NO WAI
- OIC
一般的な形式は-
<any_expression>
O RLY?
YA RLY
<code to execute if above condition is true>
NO WAI
<code to execute in this block>
OIC
上記のステートメントはすべて、-のようにコンマで区切って同じ行に書き込むことができます。
BOTH SAEM NAMES AN "Name", O RLY?
YA RLY, VISIBLE "My name is ABCD"
NO WAI, VISIBLE "Your name is ABCD"
OIC
if-thenステートメントを使用している間、オプションのMEBBE <任意の式>をYARLYブロックとNOWAIブロックの間で使用できます。
MEBBEに続く<anyexpression>がTrue(WIN)の場合、そのブロックが実行されます。それ以外の場合、その式がfalseの場合、ブロックは次のMEBBE、NO WAI、またはOICステートメントまでスキップされます。
例
<any expression>
O RLY?
YA RLY
<code to be executed if true>
MEBBE <expression>
<code to be executed mebbe is true>
MEBBE <expression>
<code to be executed mebbe is true>
NO WAI
<code to be executed if above are false>
OIC
例
BOTH SAEM NAMES AN "NAME"
O RLY?
YA RLY, VISIBLE "YOUR NAME IS ABCD"
MEBBE BOTH SAEM ANIMAL AN "OUR NAME IS ABCD"
VISIBLE "NO ABCD"
OIC
ケースステートメント
LOLCODEでは、キーワード「WTF?」他の多くの言語での切り替えに似ています。キーワードWTF?比較のための式の値としてITを取ります。WTFを使用するには、OMGによって比較ブロックが開かれます。これは、式ではなくリテラルである必要があります。
他の言語の場合と同様に、各リテラルは一意である必要があることに注意してください。
OMGブロックは、GTFOステートメントで終了する必要があります。OMGブロックがGTFOによって終了されていない場合、次のOMGブロックはGTFOに到達するまで実行されます。
どのリテラルもtrueと評価されない場合、デフォルトのケースはOMGWTFによって示されます。
WTF?
OMG <any value to compare>
<code block to execute if expression is satisfied>
OMG <any value to compare>
<code block to execute if expression is satisfied>
OMGWTF
<code block to execute as a default case>
OIC
NAME, WTF?
OMG "A"
VISIBLE "ABCD"
GTFO
OMG "E"
VISIBLE "EFGH"
GTFO
OMGWTF
VISIBLE "ZYXW"
OIC
上記のコードの出力結果は次のようになります-
「E」:
EFGH