基于 'var T' 的重载

如果形式参数 f 是除了普通类型检查外的 var T 类型, 则检查实参是否 左值 。 var TT 更好地匹配。

  1. proc sayHi(x: int): string =
  2. # 匹配非var整型
  3. result = $x
  4. proc sayHi(x: var int): string =
  5. # 匹配var整型
  6. result = $(x + 10)
  7.  
  8. proc sayHello(x: int) =
  9. var m = x # 可改变的x
  10. echo sayHi(x) # 匹配sayHi的非var版本
  11. echo sayHi(m) # 匹配sayHi的var版本
  12.  
  13. sayHello(3) # 3
  14. # 13