跳转至

闭包与权限

演示闭包纯度匹配与 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;
}