ソフトウェアエンジニアの日常の雑記

日々思ったことをまとめます

nim lang チュートリアル3 (parameters, discard, name arguments)

つづき

parameters

var変数をproceduresに渡すと参照渡しになるっぽい

proc divmod(a, b: int; res, remainder: var int) =
  res = a div b        # integer division
  remainder = a mod b  # integer modulo operation

var
  x, y: int
divmod(8, 5, x, y) # modifies x and y
echo x  # 1
echo y  # 3

discard

voidっていうのはないので、戻り値を無視する場合は、discardをつけて呼び出す


proc yes(question: string) bool = return true # yes("question") # Error: expression 'yes("question")' is of type 'bool' and has to be discarded discard yes("question")

discardable をつけても戻り値を無視できる

proc p(x, y: int): int {.discardable.} =
  return x + y

p(3, 4)

ただ無視するだけなので、echo とかつけたら表示はできる

proc p(x, y: int): int {.discardable.} =
  return x + y

echo p(3, 4)  # 7

... 本家はこちら