命令调用语法

如果调用在语法上是一个语句,则可以在没有 () 的情况下调用例程。 这种限制意味着 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.  
  4. echo optarg 1, " ", singlearg 2 # 打印 "1 40"
  5.  
  6. let fail = optarg 1, optarg 8 # 错误。命令调用的参数太多
  7. let x = optarg(1, optarg 8) # 传统过程调用2个参数
  8. let y = 1.optarg optarg 8 # 与上面相同,没有括号
  9. assert x == y

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