第十章 · Move 宏函数详解

本书目录中,本章位于 第九章 · 使用对象 之后、第十一章 · 设计模式 之前,在侧边栏中单独列为 「Move 宏函数」 篇。

宏函数(macro fun)是 Move 在 Move 2024 中提供的元编程机制:在编译期把调用点「展开」成普通 Move 代码,从而在不增加运行时开销的前提下,表达高阶抽象(循环、惰性分支、代码复用)。本章从动机、编译管线、语法与展开语义讲起,再系统梳理标准库中 vector / option 等常用宏,并给出排错与选型建议。

本章内容

主题你将学到
11.1为什么需要宏函数与泛型函数对比、惰性代码、零成本抽象
11.2编译期是什么解析、类型检查、宏展开、字节码与链上执行的分界
11.3宏函数的定义macro fun$ 参数、可见性、与 fun 的差异
11.4展开与求值语义表达式代入、! 调用、与函数调用的本质区别
11.5Lambda 与代码块参数语义与 fun 对比、类型形式、定义/捕获/实例、仅宏可用与常见误区
11.6标准库:向量宏do! / fold! / tabulate! / destroy!
11.7标准库:Option、assert! 与其它do!destroy_or!、BCS peel_*!、测试宏
11.8常见误区与排错报错位置、类型不满足、与手写循环的取舍
11.9小结与选型何时用宏、何时用手写循环或普通函数

节与正文、示例代码

正文配套 code/
11.1–11.5为什么需要宏Lambdacode/macro_lab/(整章共用一包)
11.6–11.7向量宏Option 与其它同上
11.8–11.9误区与排错小结同上

学习目标

读完本章后,你将能够:

  • 说明宏在编译期展开的含义,以及它与普通 fun传参/求值上的差异
  • 正确编写 macro fun、使用 $ 参数与 lambda 形参
  • 熟练运用 vector / option 标准库宏,并知道 assert!、BCS peel_*! 的典型场景
  • 根据报错定位到调用处或展开后的代码,并做出工程上的取舍

与第六章的关系

第六章 §6.8 提供最短上手;本章是系统篇

本章实战练习

hands-on.md