匿名函数
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();
当前边界
第一阶段先只把匿名函数作为回调使用,不展开完整一等函数值系统。
当前不建议依赖这些能力:
- 把匿名函数存入变量
- 把匿名函数作为普通返回值返回
- 把匿名函数存入结构体字段或容器
- 在匿名函数里修改捕获的外部绑定