Tag: anonymous function

与Java内部类相比,Scala闭包 – >最终VS var

我首先问过这个关于在Java中使用带有匿名内部类的final问题: 为什么我们使用带有匿名内部类的final关键字? 我实际上正在阅读马丁奥德斯基的Scala书。 似乎Scala简化了很多Java代码,但对于Scala闭包,我注意到了一个显着的差异。 在Java中,我们使用匿名内部类“模拟”闭包,捕获最终变量(将被复制到堆上而不是堆栈中),在Scala中我们可以创建一个可以捕获val的闭包,但是也是一个var,因此在闭包调用中更新它! 所以我们可以使用没有final关键字的Java匿名内部类! 我还没读完这本书,但是现在我没有找到关于这种语言设计选择的足够信息。 有人能告诉我为什么马丁奥德斯基,他似乎真正关心function的副作用,选择闭合能够捕获val和var ,而不仅仅是val ? Java和Scala实现的优点和缺点是什么? 谢谢 相关问题: 使用Scala闭包,何时捕获的变量开始存在于JVM堆上?