When nimvm 语句

nimvm 是一个特殊标识符, 可用 when nimvm 语句表达式来判断路径,编译时或可执行文件之间执行。

示例:

  1. proc someProcThatMayRunInCompileTime(): bool =
  2. when nimvm:
  3. # 编译时采用此分支.
  4. result = true
  5. else:
  6. # 可执行文件中采用此分支.
  7. result = false
  8. const ctValue = someProcThatMayRunInCompileTime()
  9. let rtValue = someProcThatMayRunInCompileTime()
  10. assert(ctValue == true)
  11. assert(rtValue == false)

when nimvm 语句必须满足以下要求:

  • 表达式必须是 nimvm ,不允许使用的复杂表达式。
  • 不得含有 elif 分支。
  • 必须含有 else 分支。
  • 分支中的代码不能影响 when nimvm 语句之后代码的语义,比如不能定义后续代码中使用的标识符。