闭包与权限¶
演示闭包纯度匹配与 act 权限继承。示例在 def 作用域内定义 def 闭包保证纯度一致,在 act 作用域内使用省略权限的 act 闭包以自动继承权限。
相关语法: Lambda 表达式,闭包与权限继承。
说明:
def 环境下的闭包无法执行副作用;act 环境下的闭包若省略权限列表,则继承当前作用域权限集。这样既能保持纯度规则,又能减少权限声明的重复。
use "std" -> std;
// def 作用域内只能定义 def 闭包
def helper(i32 x) -> i32 {
val add_one = def (i32 y) -> i32 {
return y + 1;
};
return add_one(x);
}
act[io.out, fs.read] main() -> i32 {
// act 闭包省略权限时自动继承当前作用域
val logger = act (msg: string) -> unit {
std.println(msg);
};
val result = helper(41);
logger("result ready");
std.println(result);
return 0;
}