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 } }