隐式参数使用关键字implicit进行标识,当进行使用时,可以不给此标识变量进行传值,而从上下文中进行查找。
1、代码
package com.yy.enhance
/**
* 隐式参数
*/
object Implicit_Context{
//隐式值
implicit val name:String = "yy"
}
object Param{
//柯里化函数
//name添加关键字implicit,使用此函数时可以不给出name的值
def info(age:Int)(implicit name:String){
println(name + ":" + age)
}
}
object ImplicitParamTest extends App {
//不使用默认的隐式值,给出具体的
Param.info(26)("xx");
//使用默认的隐式值
import Implicit_Context._
Param.info(25)
}
2、结果
xx:26
yy:25
3、隐式转换和隐式参数结合
package com.yy.enhance
/**
* 隐式参数和隐式转换
*/
object ImplicitConversionAndImlicitParam extends App {
//柯里化函数
//implicit:隐式参数,同时对于把匿名函数赋值给变量ordered
//所以ordered是一个函数
def bigger[T](a:T,b:T)(implicit ordered:T => Ordered[T])
= if(ordered(a)>b) a else b
println(bigger(3,4))
println(bigger("yy","xx"))
}
结果如下:
4
yy
来源:CSDN
作者:残缺的孤独
链接:https://blog.csdn.net/yyywyr/article/details/50451675