本技能是 MoonBit 语言的参考手册,所有可执行断言均针对 moonc v0.10.6+80dc50f24(MoonBit 0.10.6,构建日期 2026-08-04)在 Linux x86_64 上验证。仓库会在 wasm-gc、wasm、js 和 native 上运行每个 mbt check 代码块,并以同一版本运行诊断用例。依赖外部运行环境或未执行的结论会标注为“文档记录,未执行”。标记为 mbt nocheck 的代码块是说明性的被拒绝或已弃用写法,不会执行。
用途:按任务理解代码、编写代码、修复代码、评判特性。理解时先识别陌生语法和本地编译器版本,按索引查找令牌或诊断码,再加载对应参考。编写时加载最小相关参考,使用当前写法,然后运行 moon check 和最窄范围的 moon test,不要照搬其他语言或旧教程的语法。修复时保留程序意图,复现诊断,检索诊断文本和可疑令牌,应用当前迁移方案,涉及弃用时以拒绝警告的方式重跑。评判特性时区分已验证、文档记录、提案和未知。
MoonBit 处于 1.0 之前并快速变化。依赖关键结论前先运行 moon version --all。若本地 moonc 与锁定版本不同,应将其视为假设,用 moon check、moon test 或 node scripts/verify_snippet.ts 复现最小示例,并与官方最新清单和文档提交对比;官方有新版本即表示本技能已过时。
主要内容按能力索引组织:声明与函数、类型与结构体枚举、模式匹配、特型与泛型、可见性、错误处理、数据类型、控制流与迭代、测试与可检查文档、异步与 FFI、属性,以及跨语言与过时语法对照。当前语法要点包括入口为 fn main { } 与 fn init { };类型参数位于名称前;顶层函数参数和返回值需要标注;特型实现不会自动产生点调用方法,需用 extend Type with Trait::{method} 显式附加;错误语法为 suberror、-> T raise E 和 try / catch / noraise,!Error、f!()、try? 已弃用;loop 与数组字面量到 Iter 的隐式转换已弃用,改用 while true / for 与显式 [| ... |];本地类型定义会发出 deprecated_syntax,应移至顶层;derive(Show) 已弃用,改用 Debug;字符串插值写作 {value};不必要的 let mut 是错误。
限制:本技能只负责语言语义,即 MoonBit 代码的含义和哪些程序可编译;不负责 moon 命令、moon.mod / moon.pkg、依赖、目标、链接、发布或项目搭建,这些属于 moonbit-toolchain。若编译器与技能内容矛盾,需用全新最小示例复现并参考报告错误流程,准备经隐私清理的 issue 草稿和模板链接;该流程不会提交 issue、调用 GitHub、修改已安装技能或将草稿写入用户仓库。