语法速览¶
此页用于快速掌握 Lumos 的语法与风格,能够直接写出正确示例。
关键入口¶
核心规则¶
- 函数纯度:
def/fun/act(见 函数与纯度)。 - 权限声明:
act[...]必须显式列出副作用权限(见 权限系统)。 unsafe fun必须写权限列表并提供尾随rollback,仅unsafe fun[]可被fun调用(见 函数与纯度)。- 变量不可变层级:
val/imv/lit(见 变量与初始化)。 - 模块导入关键字为
use(见 模块系统)。
配置文件¶
- 仅允许存在一个配置文件:
lumos.yaml/lumos.json/lumos.toml。 - 三种格式共享同一配置树与键名(见 模块系统)。
源码与标识符¶
语法要点速查¶
- 字符串转义固定长度:
\xNN、\uNNNN(见 字符串字面量)。 \x插入 byte,\u插入字符;普通字符串禁止\0(字节串允许)。use "mod" -> ns导入模块到命名空间(见 模块系统)。act[perm]权限树使用点号分层,支持组语法{}(见 权限系统)。- 数组用
$[...]初始化,切片类型为[]T,指针类型为[T](见 数组、类型系统)。 where用于参数约束,必须是纯表达式(见 函数与纯度)。- 后置
if与then可写成表达式式控制流(见 控制流)。
文档一致性约定¶
快速模板¶
最小可运行程序:
use "std" -> std;
act[io.out] main() -> i32 {
std.println("Hello, Lumos!");
return 0;
}
函数纯度与权限边界:
def add(i32 a, i32 b) -> i32 = a + b;
fun compute(i32 x) -> i32 {
return add(x, 1);
}
act[io.out] main() -> i32 {
std.println(compute(41));
return 0;
}
unsafe fun 回滚语法(尾随 rollback,可访问函数体内变量):
unsafe fun[] next_id() -> i32 {
@static
var i32 counter = 0;
counter = counter + 1;
return counter;
} rollback {
counter = counter - 1;
}
闭包纯度与权限继承:
def helper(i32 x) -> i32 {
val add_one = def (i32 y) -> i32 { return y + 1; };
return add_one(x);
}
act[io.out] main() -> i32 {
val logger = act (msg: string) -> unit { std.println(msg); };
logger("ok");
return 0;
}
数组与切片:
val arr = $[1, 2, 3, 4, 5];
[]i32 s = arr[1..3];
异常处理:
@exception(allow)
act might_fail(i32 v) -> i32 { if (v < 0) throw "err"; return v; }
act[io.out] main() -> i32 {
val v = might_fail(-1) or { return -1; };
return 0;
}
关键词指引¶
相关内容:阅读路线见 阅读路线。