Scala 闭包

本文通过两个示例介绍了Scala中的闭包概念。闭包是一个可以访问并保持对外部局部变量引用的函数,它可以阻止这些变量被销毁,使得局部变量能够在函数外部使用。第一个例子展示了闭包如何在函数内部捕获并使用外部变量。第二个例子说明了闭包如何在多次调用中维持状态,每次调用都会增加变量`a`的值。这两个实例揭示了闭包在实现状态保持和函数式编程中的作用。
摘要由CSDN通过智能技术生成

闭包:

闭包:就是一个函数和与其相关的引用环境变量(变量)组合的一个整体(实体)

也可以:一个函数,如果访问了外部的局部变量,则这个函数和它访问的局部变量,称为闭包

闭包会阻止外部变量的销毁,可以把局部变量的使用延伸到函数外部

object Closure {
  def main(args: Array[String]): Unit = {
    val f = foo()
    val r = f(20) // 能够访问到 a 是因为有闭包的存在
    println(r)
  }
  def foo()={
    var a = 10 //外部局部变量
    (b:Int)=> a+b  // 访问了外部局部变量 为闭包
  }
}

object Closure {
  def main(args: Array[String]): Unit = {
    val f = foo()
    
    println(f()) //输出:11 
    println(f()) // 输出:12
    
    val f1 = foo()
    println(f1()) // 输出:11
  }
  def foo()={
    var a = 10
    () => {
      a+=1
      a
    }
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值