Effects编译指示

effects 编译指示旨在帮助程序员进行效果分析。 这是一个声明,使编译器将所有推断的效果输出到 effects 的位置:

  1. proc p(what: bool) =
  2. if what:
  3. raise newException(IOError, "IO")
  4. {.effects.}
  5. else:
  6. raise newException(OSError, "OS")

编译器生成一条提示消息,可以引发 IOError 。 未列出 OSError ,因为它不能在分支中引发 effects 编译指示。