a11_scala 闭包
导航
- scala outline
- 闭包解释
- 代码示意
scala outline
scala outline
闭包解释
闭包:
内层函数f2要访问外层函数f1局部变量a,当外层函数f1执行结束之后,f1会释放栈内存,但是会自动的延长f1函数的局部变量的生命周期,和内层函数f2形成一个闭合的效果,我们将这种闭合的效果称之为闭包
代码示意
如果存在闭包,那么编译器会生成包含$anonfun$的字节码文件
def main(args: Array[String]): Unit = {println(f1()(5))def f1(): (Int) => Int = {var a: Int = 4def f2(b: Int): Int = { // f2中用到了局部变量aa + b}f2 _}}
代码简化
def main(args: Array[String]): Unit = {println(f1()(5))def f1(): (Int) => Int = {var a: Int = 4// 可以使用匿名函数的形式 (b:Int)=>{a+b} // 最后一行,默认可作为返回值}}
注意:
为什么要函数嵌套函数?
为了减少内存开销
更多推荐
a11_scala 闭包
发布评论