文書の過去の版を表示しています。
プロシージャ
プロシージャは他の多くの言語で言うところの関数です。プロシージャはproc
を使って新しく定義できます。
<codeprism lang=nim> proc add(a, b: int): int =
a + b
echo add(1, 2) #⇒ 3 </codeprism>
proc
は値を返すことが出来るので、まるで関数のようです。Nimにはfunc
というキーワードもあります。これは関数型プログラミングの純粋関数により近いものです。また、method
というキワードもあります。現段階ではfunc
とmethod
は忘れていおいてproc
に注力します
戻り値
先のaddの例では、最後の式であるa + b
が戻り値になりました。プロシージャの戻り値がどのように決定されるかは、次のルールに従います。
result
という名前の変数が使用されていた場合、その値が戻り値となる- return文がある場合、それに続く式の値が戻り値になる
- 式を伴わないreturn文がある場合、
return result
と同じ意味になる result
もreturn文もない場合、プロシージャの最後の式が戻り値となる
先のaddの例では、最後のルールが適用さました。他のルールを適用することも出来ます。
result
という名前の変数が使用されていた場合、その値が戻り値となる:
<codeprism lang=nim> proc add(a, b: int): int =
result = a + b
</codeprism>
return文がある場合、それに続く式の値が戻り値になる:
<codeprism lang=nim> proc add(a, b: int): int =
return a + b
</codeprism>
式を伴わないreturn文がある場合、return result
と同じ意味になる:
<codeprism lang=nim> proc add(a, b: int): int =
result = a + b return
</codeprism>
このプロシージャをadd(1, 2)
と呼び出した場合、いずれも最初の例と同じである3
が戻り値になります。
パラメーター
パラメーター (parameters)とはプロシージャの引数を指します。プロシージャの呼び出し時に渡される値はアーギュメント (arguments)と読んで区別することが出来ます。最近では必要なときにのみ、このようにparametersとargumentsを使い分けることが多いです。日本語の古い資料だと仮引数と実引数と分けているものもあります1)。どちらを指しているかは文脈から明らかなことが多いので、最近は単に引数とだけ呼ばれるのが普通です。