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

  }
}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM