ユーザ用ツール

サイト用ツール


tutorial:nim:procedures

文書の過去の版を表示しています。


プロシージャ

プロシージャは他の多くの言語で言うところの関数です。プロシージャはprocを使って新しく定義できます。

<codeprism lang=nim> proc add(a, b: int): int =

a + b

echo add(1, 2) #⇒ 3 </codeprism>

procは値を返すことが出来るので、まるで関数のようです。Nimにはfuncというキーワードもあります。これは関数型プログラミングの純粋関数により近いものです。また、methodというキワードもあります。現段階ではfuncmethodは忘れていおいて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)をどちらを指しているかは文脈から明らかなことが多いので、最近は単に引数とだけ呼ばれるのが普通です。

1)
個人的な意見を言うと、どっちが仮でどっちか実か覚えておかなければならず、まったく意味のない負担かけるので、この名称は好ましくないと思っています。
tutorial/nim/procedures.1709993705.txt.gz · 最終更新: 2024/03/09 23:15 by freemikan

特に明示されていない限り、本Wikiの内容は次のライセンスに従います: CC0 1.0 Universal
CC0 1.0 Universal Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki