相互递归类型

对象、元组和引用可以模拟相互依赖的非常复杂的数据结构; 它们是 相互递归的 。在Nim中,这些类型只能在单个类型部分中声明。(即任何其他因为需要任意符号先行减慢编译速度的类型。)

示例:

  1. type
  2. Node = ref object # 对具有以下字段的对象的引用:
  3. le, ri: Node # 左右子树
  4. sym: ref Sym # 叶节点包含Sym的引用
  5.  
  6. Sym = object # 符号
  7. name: string # 符号名
  8. line: int # 符号声明的行
  9. code: Node # 符号的抽象语法树