宏
宏是一种在编译时运行的特殊函数。通常,宏的输入是所传入的代码的抽象语法树(AST)。 宏然后可以对其执行转换,并将转换后的 AST 结果返回。 可以用来添加自定义的语言功能,实现 domain-specific languages “领域特定语言”。
宏的调用是一种特殊情况,语义分析并不完全是自顶向下、从左到右的。相反,语义分析至少发生两次:
- 语义分析识别并解析宏调用。
- 编译器执行宏正文(可能会调用其他过程)。
- 将宏调用的 AST 替换为宏返回的 AST。
- 再次对该区域的代码进行语义分析。
- 如果宏返回的 AST 包含其他宏调用,则迭代执行。
虽然宏支持高级的编译时代码转换,但无法更改 Nim 的语法。
风格说明: 为了代码的可读性,最好选用最弱的但又能满足需要的编程结构。建议如下:
- 尽可能使用常规的过程和迭代器。
- 其次尽可能使用泛型过程和迭代器。
- 再次尽可能使用模板。
- 最后才考虑使用宏。
当前内容版权归 vectorworkshopbaoerjie 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 vectorworkshopbaoerjie .