语言特性
专为嵌入场景打造的表达式语言
🧮
表达式优先
几乎所有语法结构都是表达式,都有返回值。if、match、loop 均可直接赋值,编写更简洁自然。
🔒
不可变数据
默认数据不可变,消除意外副作用。需要可变时使用 mut 显式声明,安全且清晰。
🛡️
空安全
访问不存在的属性返回 nil 而非报错,配合 ?? 空合并和 ! 断言,轻松处理缺失值。
🔗
扩展调用
使用 :: 语法链式组合函数,value::fn(arg) 等价于 fn(value, arg),数据流一目了然。
🎯
模式匹配
强大的 match 表达式支持字面量、范围、解构、守卫等多种模式,替代冗长的 if-else 链。
📐
字符串插值
"hello, $name" 和 "$(expr)" 语法让字符串拼接直观优雅,还支持模板模式。
代码示例
直观感受 MiraScript 的表达力
表达式 & 模式匹配
// 表达式优先:if/match 都有返回值
let status = if score > 60 { "pass" } else { "fail" };
// 模式匹配
let msg = match score {
case 90..100 { "优秀" }
case 60..<90 { "及格" }
case _ { "不及格" }
};
(status, msg) 函数 & 扩展调用
// 函数声明 & 单参数简写
fn double { it * 2 }
// 扩展调用链
let result = [5, 2, 8, 1, 9, 3, 7, 4, 6]
::map(double)
::filter(fn { it > 3 })
::sort();
result 字符串插值
// 字符串插值
let name = "MiraScript";
debug_print("Hello, $name!");
// 表达式插值
let items = [1, 2, 3];
debug_print("count: $(items::len())"); 空安全
// 空安全访问
let user = (name: "Alice");
debug_print(user.address.city); // => nil
// 空合并与默认值
let city = user.address.city ?? "未知";
debug_print(user.name!, city); // 断言非空 为什么选择 MiraScript
与传统脚本语言相比的优势
- ⚡高性能
Rust 编写的解释器内核,支持编译到 WebAssembly,在浏览器和服务端均可高效运行。
- 🧩易于嵌入
提供 Node.js、Python、WASM 等多平台绑定,轻松集成到你的应用中。
- 🎨开发者体验
内建 VS Code 扩展、Monaco 编辑器集成,提供语法高亮和智能提示。
- 📖完善文档
交互式教程、可运行的代码示例、完整的语言参考,快速上手不迷路。
准备好开始了吗?
跟随教程,几分钟内上手 MiraScript。