匿名函数

Dujie 支持匿名函数。语法与普通函数一致,只是没有名字。

基本形式

func(x: int) -> string {
    `#${x}`
}

作为回调使用

匿名函数当前主要用于目标参数类型已知的位置,例如 iter.map

let numbers: list<int> = [1, 2, 3];

let result = iter(numbers).map(func(x: int) -> string {
    `#${x}`
}).collect();

捕获外部变量

匿名函数允许捕获外部变量,使用词法作用域:

let prefix = "item: ";

let result = iter(["a", "b"]).map(func(x: string) -> string {
    `${prefix}${x}`
}).collect();

当前边界

第一阶段先只把匿名函数作为回调使用,不展开完整一等函数值系统。

当前不建议依赖这些能力:

  • 把匿名函数存入变量
  • 把匿名函数作为普通返回值返回
  • 把匿名函数存入结构体字段或容器
  • 在匿名函数里修改捕获的外部绑定