関数について *

なでしこでは、独自の処理を関数にまとめて再利用できます。関数を定義するには次の書式で記述します。

[書式1]
関数 関数名とは
  # ここに関数定義
ここまで

以下は関数の定義例です。「挨拶」という関数を定義します。

   v3.6.37

【メモ】「関数」という語句は、記号「●」に置き換えができます。なでしこでは、視認性の良さから「関数」を「●」で記述します。「●」をIMEで入力するには、「まる」または「くろまる」と入力して変換します。

関数に引数宣言が必要な場合、以下のように指定します。

[書式2]
●(引数)関数名とは
  # ここに関数定義
ここまで

以下のように、なでしこv1と互換性のある指定方法も可能です。ただし、読みやすさの観点から今後は引数定義を関数名の前に記述する方法をオススメします。

[書式3] 
●関数名(引数)
  # ここに関数定義
ここまで

関数を呼び出す方法 *

上記のように定義した関数もなでしこに最初から備わっている関数と同じように呼び出すことができます。

[書式] 定義した関数を呼び出す方法
(引数1)(助詞)、(引数2)(助詞)、... 関数名。

なお、なでしこの関数呼び出しでは、引数と一緒に指定した『助詞』の部分が重要で、助詞が合っていれば、引数の順番を入れ替えても正しく動くようになっています。

例えば、引き算を行う「AからBを引く」という関数は以下のように書き換えても正しく動きます。以下のプログラムは両方とも8を表示します。

   v3.6.37

関数の戻り値について *

そして、関数は戻り値を指定できます。戻り値を指定するには、特殊変数「それ」に値を代入するか、あるいは「(値)を戻す」文で値を指定します。

なお、『!厳しくチェック』を有効にした場合、戻り値が未定義だと警告が表示されます。そのため、『戻り値無し』を指定すると警告を抑制できます。

   v3.6.37

簡単な関数の定義例 *

以下のプログラムは、足し算を行うだけの「加算処理」という関数を定義する例です。

   v3.6.37

関数の戻り値を指定する特殊変数「それ」は関数を呼び出すと自動的に更新される仕組みとなっています。そのため、以下のように暗黙的に関数の戻り値を指定できます。

   v3.6.37

関数の戻り値を「(値)を戻す」で指定する場合 *

以下の例のように「(値)を戻す」文を使うこともできます。

   v3.6.37

「それ」に関する補足 *

改めて、暗黙的に関数の戻り値を指定する関数の例を見てみましょう。なでしこで関数を実行すると特殊変数「それ」が自動的に更新されます。そのため以下のプログラムには、変数「それ」が一度も出てきませんが、変数「それ」を通じて戻り値がやり取りされています。

   v3.6.37

もう一つ、例を見てみましょう。

   v3.6.37

ローカル変数の定義 *

なお、関数内でのみ使えるローカル変数を定義できます。文法/ローカル変数をご覧ください。

再帰処理も記述可能 *

再帰処理とは、ある関数から、その関数自身を呼び出す処理のことです。以下のプログラムは階乗の計算を、敢えて再帰関数で定義する例です。

   v3.6.37

(補足) JavaScriptのコールバックでイベント引数を得る場合 *

なでしこネイティブの引数ではなく、JavaScriptのコールバックイベントなどで、イベント引数を取得したい場合、変数「引数」に配列形式で、イベント引数の値が得られます。

   v3.6.37

(補足) JavaScriptの関数オブジェクトを取得する場合 *

v3.6.0以上では、JavaScriptの関数オブジェクトを取得する「JSオブジェクト取得」命令を「{関数}」と置き換えることができます。

   v3.6.37

参考 *