a11_scala 闭包

编程入门 行业动态 更新时间:2024-10-27 02:19:43

a11_scala 闭包

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 闭包

本文发布于:2023-07-28 17:48:09,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1266984.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:a11_scala

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!