模板形参查询规则
模板中的参数 p 甚至在表达式 x.p 中被替换。 因此,模板参数可以用作字段名称,也可以使用相同的参数名称对限定的全局符号进行隐藏:
- # 模块'm'
- type
- Lev = enum
- levA, levB
- var abclev = levB
- template tstLev(abclev: Lev) =
- echo abclev, " ", m.abclev
- tstLev(levA)
- # 生成: 'levA levA'
但是可以通过 bind 语句正确捕获全局符号:
- # 模块'm'
- type
- Lev = enum
- levA, levB
- var abclev = levB
- template tstLev(abclev: Lev) =
- bind m.abclev
- echo abclev, " ", m.abclev
- tstLev(levA)
- # 生成: 'levA levB'