scala中的闭包简单使用

Posted yxj0728

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

  }
}

  

以上是关于scala中的闭包简单使用的主要内容,如果未能解决你的问题,请参考以下文章

Scala 闭包

闭包与内部类

scala闭包/匿名函数中的多个返回点

scala为什么要清理闭包

Spark闭包与序列化

linux打开终端如何启动scala,如何在终端下运行Scala代码片段?