Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

第十一章 · Move 宏函数详解

本书目录中,本章位于 第十章 · 使用对象 之后、第十二章 · 高级可编程性 之前,在侧边栏中单独列为 「Move 宏函数」 篇。

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

本章内容

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

节与正文、示例代码

正文配套 code/
7.1–7.5为什么需要宏Lambdacode/macro_lab/(整章共用一包)
7.6–7.7向量宏Option 与其它同上
7.8–7.9误区与排错小结同上

学习目标

读完本章后,你将能够:

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

与第六章的关系

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

本章实战练习

hands-on.md