命令调用语法
如果调用在语法上是一个语句,则可以在没有 () 的情况下调用例程。 这种限制意味着 echo f 1, f 2 被解析为 echo(f(1), f(2)) 而不是 echo(f(1, f(2))) 。
在这种情况下,方法调用语法可用于提供一个或多个参数:
- proc optarg(x: int, y: int = 0): int = x + y
- proc singlearg(x: int): int = 20*x
- echo optarg 1, " ", singlearg 2 # 打印 "1 40"
- let fail = optarg 1, optarg 8 # 错误。命令调用的参数太多
- let x = optarg(1, optarg 8) # 传统过程调用2个参数
- let y = 1.optarg optarg 8 # 与上面相同,没有括号
- assert x == y
命令调用语法也不能将复杂表达式作为参数。 例如: (anonymous procs), if, case 或 try 。 调用没有参数的函数仍需要 () 来区分调用和作为第一类值的函数本身。