命令调用语法

如果调用在语法上是一个语句,则可以在没有 () 的情况下调用例程。此命令调用语法也适用于表达式。但之后只能有一个参数。这种限制意味着 echo f 1, f 2 被解析为 echo(f(1), f(2)) 而不是 echo(f(1, f(2))) 。 在这种情况下, 方法调用语法可以用来提供更多的参数。

  1. proc optarg(x: int, y: int = 0): int = x + y
  2. proc singlearg(x: int): int = 20*x
  3. echo optarg 1, " ", singlearg 2 # 打印 "1 40"
  4. let fail = optarg 1, optarg 8 # 错误。命令调用的参数太多
  5. let x = optarg(1, optarg 8) # 传统过程调用 2 个参数
  6. let y = 1.optarg optarg 8 # 与上面相同, 没有括号
  7. assert x == y

命令调用的语法也不能有复杂的表达式作为参数。例如:匿名过程、if、case、try。 没有参数的函数调用仍然需要 () 来区分调用和函数本身优先类的值。