Tag跟踪

异常跟踪是Nim 效应系统 的一部分。 引发异常是 效应 。 其他效应也可以定义。 用户定义的效应是 标记 例程并对此标记执行检查的方法:

  1. type IO = object ## input/output effect
  2. proc readLine(): string {.tags: [IO].} = discard
  3.  
  4. proc no_IO_please() {.tags: [].} =
  5. # the compiler prevents this:
  6. let x = readLine()

标签必须是类型名称。一个 tags 列表 - 就像一个 raises 列表 - 也可以附加到一个proc类型。 这会影响类型兼容性。

标签跟踪的推断类似于异常跟踪的推断。