When nimvm语句
nimvm 是一个特殊的符号,可以用作 when nimvm 语句的表达式来区分编译时和可执行文件之间的执行路径。
示例:
- proc someProcThatMayRunInCompileTime(): bool =
- when nimvm:
- # 编译时采用这个分支。
- result = true
- else:
- # 可执行文件中采用这个分支
- result = false
- const ctValue = someProcThatMayRunInCompileTime()
- let rtValue = someProcThatMayRunInCompileTime()
- assert(ctValue == true)
- assert(rtValue == false)
when nimvm 语句必须满足以下要求:
- 它的表达式必须是 nimvm 。不允许更多的复杂表达式。
- 它必须不含有 elif 分支。
- 必须含有 else 分支。
- 分支中的代码不得影响 when nimvm 语句后面的代码的语义。例如它不能定义后续代码中使用的符号。