Scala中的闭包

  • 笔者认为 Scala 的闭包是一种介于全局变量和函数局部私有变量之间的数据访问机制
  • 闭包是一个函数与其相关的引用环境组合的一个整体
  • 闭包中引用的环境变量是私有的不会被外部环境所更改,但是看起来又仿佛是全局性的,每次调用都能访问到,内存并不会被释放掉
object closure{

  def main(args: Array[String]): Unit = {
    var x  = 10
    val f = plus(x)
    println(f(10))
    x = 20
    println(f(10))  //结果还是输出20
  }

  def plus(x:Int):Int=>Int = {
    (y:Int)=>x + y
  }
}

上面这段代码很能说明问题,即使外部 x 变量的值发生了更改,但是闭包函数的输出值还是没有发生变化, 说明这个闭包变量已经跟外部变量割断联系了,但函数运行结束也不会释放掉,就好像固化在了某个地方一样

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容