scala中的闭包

scala闭包

代码示例:

package test.close_pack

import scala.collection.mutable.ArrayBuffer

/**
  * AUTHOR Guozy
  * DATE   2019/6/1-14:44
  **/
object F_clo {
  var votingName = "jack"
  val isOfVotingAge = (name: String) => {
    println(s"hello ${name},you name is ${votingName} when after change!!!")
  }

  var fruits = ArrayBuffer[String]()

  def addToBusk = (s: String) => {
    fruits += s
    println(fruits.mkString(","))
  }
}

  

package test.close_pack

import scala.collection.mutable.{ArrayBuffer, ListBuffer}

/**
  * AUTHOR Guozy
  * DATE   2019/6/1-14:43
  **/
object Mains {
  def main(args: Array[String]): Unit = {
    F_clo.isOfVotingAge("Dany")
    F_clo.isOfVotingAge("mack")
    printResult(F_clo.isOfVotingAge, "kindy")
    F_clo.votingName = "Computer"
    printResult(F_clo.isOfVotingAge, "nick")
    println("-----------------------------------------")
    F_clo.addToBusk("apple")
    F_clo.addToBusk("bananal")
    buyStaf(F_clo.addToBusk, "water")
    F_clo.fruits = ArrayBuffer[String]()
    buyStaf(F_clo.addToBusk,"blue")
    buyStaf(F_clo.addToBusk,"yellow")
  }

  def printResult(f: String => Unit, x: String): Unit = {
    f(x)
  }

  def buyStaf(f: String => Unit, x: String) = {
    f(x)
  }
}

 运行结果:

定义:

  1、所谓的闭包,即一个函数与一个与该函数引用的非局部变量引用环境,闭包允许函数直接访问直接语法作用于之外的变量。

  2、闭包是满足下面三个条件的一段代码块:

    a.代码块可以当做值来传递

    b.同时可以被任何拥有改制的对象按需执行

    c.可以引用上下稳重已经创建的变量

  3、一个闭包开始于一个函数以及定义在同一作用于的变量,然后它们彼此分开。当函数在某时刻被执行时,它仍然很神奇的知道早前引用的变量,甚至获得任何变量的修改

转载于:https://www.cnblogs.com/Gxiaobai/p/10959848.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值