scala高阶函数之闭包

闭包往往和匿名函数一起使用, 可以读到其它函数内部变量的函数,即例子中的匿名函数可以读取到前面函数中的变量。

是将函数内部与函数外部连接起来的桥梁。

可以理解为在函数内部定义的函数就是闭包

package day3

object demo_closeur {
    def main(args: Array[String]): Unit = {
        def mulby(fact:Double) =(x:Double)=>fact * x   // 闭包往往与匿名函数搭配使用
        // 闭包的使用
        val full = mulby(3)  // (x:Double)=>3 * x
        val half = mulby(0.5) // (x:Double)=>0.5 * x
        println(full(14) + "=====>" + half(14)) // (14:Double)=>3 * 14

        // 第二个示例
        def a(x:Int,y:Int) = (z:Int) =>x * y *z
        // 柯里化调用
        println(a(2,3)(4))
        // 分开调用
        val t1 = a(2,3)
        val t2 = t1(3)
        println(t2)
    }
}
原文地址:https://www.cnblogs.com/kongzhagen/p/15161574.html