必须将 Nim 函数默认参数作为可变变量

Must have Nim function default argument as a mutable variable

我们如何让 Nim 函数默认 parameter/argument 用于可变 ( r/w ) 参数最简单,即通常是布尔值?例如插图:

proc foo( m:int; n :var int) =    # <- how the correct one
  if n :
   echo 7+m+n
  else :
   echo m 

foo 7    # <- as it's demanded

在这种情况下,您想使用函数重载而不是默认参数。如果您使用文字作为默认 var 参数的值,则不清楚如果您尝试更改它会发生什么。

proc foo(m: int) =
  echo m

proc foo(m: int, n: var int) =
  echo 7 + m + n

foo(7)  # prints 7

var n = 3
foo(7, n)  # prints 17