表达式优先
if、match、loop 都有返回值。让控制流直接参与计算,少写中间变量,多表达真实意图。
let level = if score > 90 { "A" } else { "B" };Expression-first scripting language
MiraScript 是一门表达式优先、默认不可变的现代脚本语言。
为产品规则而生,为多端运行而设计。
LANGUAGE / 01
把安全、组合与表达力放进语言本身,而不是留给使用者反复补救。
if、match、loop 都有返回值。让控制流直接参与计算,少写中间变量,多表达真实意图。
let level = if score > 90 { "A" } else { "B" };数据默认不可变,需要改变时用 mut 明确标记。状态变化在代码里清晰可见。
let point = (x: 12, y: 24);安全访问、空合并与非空断言协同工作,缺失值不再打断整个执行流程。
user.profile.name ?? "访客"用 :: 把数据与函数连成自然的处理管线,复杂转换仍然能从左到右阅读。
items::map(parse)::filter(valid)字面量、范围、解构与守卫集中在一个 match 中,覆盖复杂分支而不牺牲可读性。
case 90..100 { "excellent" }直接在字符串中引用名称或表达式,日志、模板和用户提示都更接近最终内容。
"Hello, $name — $(items::len()) items"用紧凑、可组合的语法描述规则与数据处理逻辑。
通过 Node.js、Python 或 WebAssembly 把 MiraScript 带进你的产品。
同一套语言语义覆盖浏览器与服务端,交付一致的执行体验。
PLAYGROUND / 03
下面不是截图。修改输入上下文,立即查看 MiraScript 的真实执行结果。
// 控制流也是值
let status = if score > 60 { "pass" } else { "fail" };
let message = match score {
case 90..100 { "优秀" }
case 60..<90 { "及格" }
case _ { "继续加油" }
};
(status, message) fn double { it * 2 }
[5, 2, 8, 1, 9, 3, 7, 4, 6]
::map(double)
::filter(fn { it > 3 })
::sort() let name = "MiraScript";
let items = [1, 2, 3];
debug_print("Hello, $name!");
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); YOUR TURN
从交互式教程开始,几分钟内掌握 MiraScript 的核心语法。