柯里化:把输入多个参数的函数变为输入1个参数的函数
声明方式:
1. 参数分开放在括号里
scala> def f1(x: Int)(y: Int) = x*y
scala> val curry = f1(2) _
scala> curry(3)
res1: Int = 6
2. 使用implicit固定值
scala> def f2(x: Int)(implicit y: Int = 3) = x*y
scala> f2(2)
res2: Int = 6
fold函数就使用了柯里化:
scala> val arr = Array(("scala",1),("scala",2),("scala",3))
scala> arr.foldLeft(0)(_ + _._2)
res3: Int = 6
练习:
package test01
object Context{
implicit val a = "java"
}
object test {
//柯里化
def m1(str: String)(implicit name: String = "scala") = {
println(str + name)
}
def main(args: Array[String]): Unit = {
m1("hi~")
import Context.a
m1("hi~")
}
}
结果: