Lolcode-functions

提供:Dev Guides
移動先:案内検索

Lolcode-関数

関数は、コードを何度も記述する時間と労力を削減するため、プログラミングに役立ちます。 適切に記述された関数コードは、高い再利用性を提供します。 この章では、LOLCODEで関数を作成および操作する方法について説明します。

関数の定義

関数は、その関数を呼び出すことで一度に実行される一連のステートメントです。 LOLCODEでは、関数の定義はキーワード「HOW IZ I」で始まり、終了キーワードは「IF U SAY SO」です。

LOLCODEで関数を記述するための構文は次のとおりです-

HOW IZ I <function name> [YR <parameter/argument> [AN YR <other _arguments..> …]]
   <code block to execute/Set of statements to execute>
IF U SAY SO

重要なポイント

LOLCODE関数を定義するときは、次の重要な点を考慮してください-

  • LOLCODEでは、関数は入力として特定の固定数の引数のみを受け入れることができます。
  • 引数またはパラメーターは、関数の変数になる識別子です。
  • LOLCODEの関数は、引数として渡された値以外の値にはアクセスできません。

関数から値を返す

コーディングのリターンは、返される何かを意味します。 プログラミングでは、実行が完了すると、関数はプログラムに値を返すことができます。 LOLCODEでは、関数は以下で説明するようにさまざまな値を返します-

  • FOUND YR <any_expression> は、ファンクションブロックが完全に実行されたときに式の値を返します。
  • GTFO は値を返しません(NOOB)。これは、CやJavaなどの他のプログラミング言語の return 0 に似ています。
  • 他のreturnステートメントが見つからない場合、 IF U SAY SO が実行され、IT変数の値が返されます。

関数を呼び出す

関数はプログラムの本体で定義され、後で実行のために呼び出されます。 引数の特定の数を受け入れる関数は、以下に示すように呼び出されます-

I IZ <function_name> [YR <expression_One> [AN YR <expression_Two>
   [AN YR <expression_Three> ...]]] MKAY

関数を呼び出している間、式は関数名とそれに続く引数の数で構成されます。 これらの引数は、単純な変数または任意の式です。 関数が単純な値ではなく式を受け入れる場合、式の値は関数が呼び出される前に計算されます。

関数が受け入れる引数の数は、関数の定義で定義する必要があることに注意してください。

HAI

HOW DUZ I MAINUMBA
   I HAS A NUMBA
   GIMMEH NUMBA
   FOUND YR NUMBA
IF U SAY SO

VISIBLE MAINUMBA

KTHXBYE

上記のコードを実行すると、入力が求められます。入力を送信すると、結果と同じ内容が表示されます。 たとえば、55と入力すると、55が出力されます。

HAI 1.2
HOW IZ I MULTIPLY YR FIRSTOPERANT AN YR SECONDOPERANT
   FOUND YR PRODUKT OF FIRSTOPERANT AN SECONDOPERANT
   IF U SAY SO
   VISIBLE I IZ MULTIPLY YR 2 AN YR 3
KTHXBYE

入力オペランドの乗算を実行する上記の関数は、実行すると次の出力を出力します。

sh-
4.3$ lci main.lo

6

HAI 1.2
I HAS A STRINGARRAY ITZ A BUKKIT
   STRINGARRAY HAS A VAR17 ITZ "OBJECT1"
   STRINGARRAY HAS A VAR18 ITZ "OBJECT2"
   HOW IZ STRINGARRAY ACCESS YR VARIABLE
      FOUND YR STRINGARRAY'Z SRS VARIABLE
   IF U SAY SO
   I HAS A STRING ITZ "VAR17"
   VISIBLE STRINGARRAY IZ ACCESS YR STRING MKAY
KTHXBYE

上記のコードが生成する出力は-

sh-
4.3$ lci main.lo
OBJECT1