柯里化:把接收多个参数的函数变成接收一个参数的函数
柯里化的两种声明方法:
-
def curry(x:Int)(y:Int) = x*y
-
def curry(x:Int) = (y:Int) => x*y
package test
/**
* @author: whua
* @create: 2018/10/08 14:38
*/
object CurryingDemo {
def m1(str: String)(implicit name: String = "scala") = {
str + name
}
def main(args: Array[String]): Unit = {
// import语句要放在函数前面,不然import无效
import Context.a
//不能同时import两个implicit进来,否则编译器无法识别,编译出错
// import Context.b
val func = m1("Hi ")
println(func)
}
}
package test
/**
* @author: whua
* @create: 2018/10/08 14:49
*/
object Context {
implicit val a = "java"
implicit val b = "python"
}