Tag跟踪
异常跟踪是Nim 效应系统 的一部分。 引发异常是 效应 。 其他效应也可以定义。 用户定义的效应是 标记 例程并对此标记执行检查的方法:
- type IO = object ## input/output effect
- proc readLine(): string {.tags: [IO].} = discard
- proc no_IO_please() {.tags: [].} =
- # the compiler prevents this:
- let x = readLine()
标签必须是类型名称。一个 tags 列表 - 就像一个 raises 列表 - 也可以附加到一个proc类型。 这会影响类型兼容性。
标签跟踪的推断类似于异常跟踪的推断。