静态语句/表达式

静态语句/表达式明确要求编译期执行。甚至在静态块中也允许一些具有副作用的代码:

  1. static:
  2. echo "echo at compile time"

static 也可以像例程一样使用。

  1. proc getNum(a: int): int = a
  2. # 以下,在编译期调用 "echo getNum(123)"
  3. static:
  4. echo getNum(123)
  5. # 下面的调用在编译期计算 "getNum(123)" ,但其结果在运行时使用。
  6. echo static(getNum(123))

对于哪些 Nim 代码可以在编译期执行,是有限制的,详情参阅编译期执行限制。 如果编译器不能在编译期执行该块,将是一个静态错误。