Nim入門時のメモ
Procedure(関数呼び出し)
code:proc.nim
proc frac(n: int): int =
if 2 <= n:
return n * frac(n-1)
else:
return 1
echo frac(20)
echo 10.frac
proc_name(arg1,arg2,arg3...)
arg1.proc_name(arg2,arg3,...)
二つ目の書き方は始め違和感を覚えたのですが、プロシージャの第一引数は型が決まっていて他の型には使えないので、プロシージャを定義することは第一引数の型にメソッドを追加するのと同じだと考えると納得出来ました。
proc proc_name(a:int, b:string = "a")で,
proc_name(b="3", a=4)みたいなことも出来る
discard
code:proc_result.nim
proc frac(n: int): int =
if 2 <= n:
result = n * frac(n-1)
else:
result = 1
実のところ,returnはresultという特別な変数(型は関数の返り値とする)への代入で,Procedureはこの変数の値を必ず返す
したがって、以下の様に戻り値が不要な関数を呼び出す時には、戻り値を"捨てる"ことを明示しなくてはなりません。 そのために discard を使用します。
code:discard.nim
proc proc_name3(a: int, b: string = "a"): string =
var c = ""
for i in 1..a:
c = c & b
echo c
discard proc_name3(10, "c") # >>> cccccccccc
proc_name3(10, "c") # ERROR!
ループ