模板
模板是简单形式的宏: 它是运行于 Nim 的抽象语法树的简单替换机制。编译器在语义分析阶段处理它。
调用 模板的语法和调用过程的语法是相同的。
Example:
template `!=` (a, b: untyped): untyped =
# 这个定义存在于系统模块中
not (a == b)
assert(5 != 6) # 编译器将其重写为: assert(not (5 == 6))
!=, >, >=, in, notin, isnot 等运算符实际上都是模板:
a > b 转换为 b < a。
a in b 转换为 contains(b, a)。
notin 和 isnot 的转换也显而易见。
模板中的 “类型” 可以使用 untyped 、typed 或 typedesc 等三个符号。 这些都是 “元类型” ,它们仅用于特定上下文中。常规类型也可使用;这意味着会得到一个 typed 表达式。
当前内容版权归 vectorworkshopbaoerjie 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 vectorworkshopbaoerjie .