scala 学习笔记--闭了个包
object Test01 { def main(args: Array[String]): Unit = { //普通函数 val squ=(x:Int) => x*x // ps:_的简写形式只在1.参数类型已知的情况下才能用--自动推断 2.=> 右边只出现一次的情况 //闭包--一旦函数引用了还是外部的变量或常量,那么该函数为闭包函数 var v=5 val fun1=mulby(v) println(s"v=$v "+fun1(2d)) v=10 println(s"v=$v "+fun1(2d)) val fun2=mulby(v) println(s"v=$v "+fun2(2d)) /* * 结果输出: * v=5 20.0 当v=5时,外部的变量已被copy到fun1函数内部,称为闭包 * v=10 20.0 当v=10时,已经不会影响fun1了 * v=10 30.0 v=10时,创建函数fun2,v的值被copy到fun2内部(闭包) * */ } //方法 def squMethod(x:Int) : Int = x*x //高阶函数--一个接受函数参数的函数 def mulby(fina:Double) = (x:Double) => fina*x+10 //fina是这个函数的参数,x是另一个函数的参数 //why?--应为可以这样用 val f1=mulby(10d) }
一旦函数引用了还是外部的变量或常量,那么就称此函数为闭包函数。