bar*_*kur 1 java closures java-8
以下代码模仿高阶函数和闭包.
static Function<Integer, Integer> getDoubleFunc(int multi) {
return (val) -> {
return val * multi;
};
}
Run Code Online (Sandbox Code Playgroud)
但为什么它不被认为是一个?是因为这里的函数是一个接口吗?
关于Java lambda表达式是否是"真正的闭包"的整个"辩论"是一个相当低效的问题,因为大多数参与者都隐含地定义了"真正的闭包"对于他们最喜欢的其他语言所谓的闭包的含义,然后转身并说"语言Y没有'真正的'封闭."
Java lambda表达式在封闭的词法范围内关闭值,但不在变量上.
维基百科说:"闭包是一个将函数与环境一起存储的记录,它是一个映射,它将函数的每个自由变量(本地使用的变量,但在封闭范围中定义)与值或存储位置相关联.在创建闭包时绑定了名称." (重点补充).
| 归档时间: |
|
| 查看次数: |
389 次 |
| 最近记录: |