跳到主要内容

Expression-first scripting language

让嵌入式逻辑写得像思考一样自然

MiraScript 是一门表达式优先、默认不可变的现代脚本语言。
为产品规则而生,为多端运行而设计。

Rust coreWebAssemblyNode.jsPython

LANGUAGE / 01

复杂能力,简单表达

把安全、组合与表达力放进语言本身,而不是留给使用者反复补救。

ifEverything returns

表达式优先

if、match、loop 都有返回值。让控制流直接参与计算,少写中间变量,多表达真实意图。

let level = if score > 90 { "A" } else { "B" };
letSafe by default

不可变数据

数据默认不可变,需要改变时用 mut 明确标记。状态变化在代码里清晰可见。

let point = (x: 12, y: 24);
??Nil, handled

空安全

安全访问、空合并与非空断言协同工作,缺失值不再打断整个执行流程。

user.profile.name ?? "访客"
::Data flows

扩展调用

用 :: 把数据与函数连成自然的处理管线,复杂转换仍然能从左到右阅读。

items::map(parse)::filter(valid)
=>One syntax, many shapes

模式匹配

字面量、范围、解构与守卫集中在一个 match 中,覆盖复杂分支而不牺牲可读性。

case 90..100 { "excellent" }
$()Strings with context

字符串插值

直接在字符串中引用名称或表达式,日志、模板和用户提示都更接近最终内容。

"Hello, $name — $(items::len()) items"

RUNTIME / 02

从一段逻辑,到每个运行环境

MiraScript 把语言与宿主解耦。业务逻辑保持纯粹,接入方式交给轻量运行时。

了解语言设计
  1. 01

    写一次

    用紧凑、可组合的语法描述规则与数据处理逻辑。

  2. 02

    嵌进去

    通过 Node.js、Python 或 WebAssembly 把 MiraScript 带进你的产品。

  3. 03

    到处运行

    同一套语言语义覆盖浏览器与服务端,交付一致的执行体验。

PLAYGROUND / 03

别只看语法,直接运行

下面不是截图。修改输入上下文,立即查看 MiraScript 的真实执行结果。

表达式 & 模式匹配LIVE
// 控制流也是值
let status = if score > 60 { "pass" } else { "fail" };

let message = match score {
  case 90..100 { "优秀" }
  case 60..<90 { "及格" }
  case _       { "继续加油" }
};

(status, message) 
函数 & 扩展调用LIVE
fn double { it * 2 }

[5, 2, 8, 1, 9, 3, 7, 4, 6]
  ::map(double)
  ::filter(fn { it > 3 })
  ::sort() 
字符串插值LIVE
let name = "MiraScript";
let items = [1, 2, 3];

debug_print("Hello, $name!");
debug_print("count: $(items::len())"); 
空安全LIVE
let user = (name: "Alice");

// 安全访问不存在的路径
debug_print(user.address.city); // nil

let city = user.address.city ?? "未知";
debug_print(user.name!, city); 

YOUR TURN

把下一段想法,
写成可运行的表达式。

从交互式教程开始,几分钟内掌握 MiraScript 的核心语法。