模板中的符号绑定

模板是 hygienic “洁净”宏,会新开作用域。大部分符号会在宏的定义作用域中绑定:

  1. # 模块 A
  2. var
  3. lastId = 0
  4. template genId* : untyped =
  5. inc(lastId)
  6. lastId
  1. # 模块 B
  2. import A
  3. echo genId() # 可以,因为 'lastId' 在 'genId' 的定义作用域中完成绑定

像在泛型中一样,模板中的符号绑定也受 mixin 或 bind 语句影响。