代码演示 (一)
implicit
可以传入一个隐式参数ra
,所以下面调用方法时只用传入一个参数
package cn._51doit.scala.day06.keli
object KeLiDemo2 {
def main(args: Array[String]): Unit = {
def m1(x:Int)(implicit y:Int) :Int ={
x+y
}
implicit var ra = 11
val res = m1(2)
print(res)
}
}
代码演示(二)
柯里化方法在定义参数时也可以用implicit
修饰,就相当于设定了默认值
非柯里化方法
的参数也能使用implicit修饰参数,但必须是第一参数
使用。
object KeLiDemo3 {
def main(args: Array[String]): Unit = {
def m1(x:Int)(implicit y:Int = 10):Int={
x + y
}
val res = m1(2)
}
}
代码演示(三)
object KeLiDemo3 {
def main(args: Array[String]): Unit = {
def m1(x:Int)(implicit y:Int = 10):Int={
x + y
}
implicit var aaa = 888;
val res = m1(2)
println(res)
}
}
如果柯里化方法中有implicit 修饰的参数,那么在调用这个柯里化方法时,会先在程序的上下文查找类型一致的参数,优先调用。如果没有,则会调用柯里化方法中的用implicit修饰的默认参数。所以上面的结果是890