• When nimvm语句

    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 语句后面的代码的语义。例如它不能定义后续代码中使用的符号。