scala中的闭包简单使用

object Closure {

  /**
    * scala中的闭包
    * 函数在变量不处于其有效作用域内,还能够对变量进行访问
    *
    * @param args
    */

  def main(args: Array[String]): Unit = {

    def getHelloFunc(msg:String) = (name:String) => println(msg + "," + name)

    val sayHello = getHelloFunc("hello") // 传入msg的值 ,后面sayHello依然可以访问到
    val sayHi = getHelloFunc("hi")

    // 两次条用getHelloFunc,传入不同的msg,创建不同的函数返回
    // 然而msg只是一个局部变量,
    // 在getHelloFunc调用后,还继续存在创建的函数中,当sayHello("yxj")调用时,值为hello的msg保留在了函数内部,可以反复使用
    // 这种变量超出了其作用域,还可以使用的情况,就是闭包

    // scala

    sayHello("yxj") // 打印 hello,yxj
    sayHi("yxj") // 打印 hi,yxj

  }
}

  

posted @ 2018-07-08 23:29  小叶啊  阅读(1810)  评论(0编辑  收藏  举报