可变参数

varargs 参数像开放数组形参。 它也表示实现传递数量可变的实参给过程。 编译器将实参列表自动转换为数组:

  1. proc myWriteln(f: File, a: varargs[string]) =
  2. for s in items(a):
  3. write(f, s)
  4. write(f, "\n")
  5.  
  6. myWriteln(stdout, "abc", "def", "xyz")
  7. # 编译器转为:
  8. myWriteln(stdout, ["abc", "def", "xyz"])

转换只在可变形参是过程头部的最后一个形参时完成。它也可以在这个情景执行类型转换:

  1. proc myWriteln(f: File, a: varargs[string, `$`]) =
  2. for s in items(a):
  3. write(f, s)
  4. write(f, "\n")
  5.  
  6. myWriteln(stdout, 123, "abc", 4.0)
  7. # 编译器转为:
  8. myWriteln(stdout, [$123, $"abc", $4.0])

在示例中 $ 适用于任何传递给形参 a 的实参。注意 $ 适用于空字符串指令。