一,
scala中的隐式转换规则
1.显式定义规则
2.无歧在同一作用域不可以有歧义,即当有两个变量定义的类型相同时,只能保留一个。)
3.定义域规则
4.不能多次转换规则(从源类型到目的地类型中间是一次性转换的 )
package test11
//函数的默认参数
//问题:如何动态去设置函数的默认参数
object test {
//函数的默认参数
def sayName(implicit str:String="小美"):Unit= {
println(str)
}
//隐式参数
// implicit val x:String = "小花~~~"
implicit val x1:String = "波妞~~~"
def main(args: Array[String]): Unit = {
sayName("小帅")
sayName()
sayName//默认参数
}
}
package test11
object test11_1 {
//之前的类不要改动
//隐式类:implicit class == 隐式转换函数 + 类
class BaseUser(){
def insertUser(){println("insertUser")}
}
//第一步:定义一个updateUser功能的类PowerUsre
//第二步:定义一个隐式转换函数,把BaseUser ---> PowerUser
// class PowerUser(){
// def insertUse(){println("insertUser")}
// }
implicit class PowerUser(u:BaseUser){
def updateUser(){println("updaterUser")}
}
// implicit def transform(u:BaseUser):PowerUser ={
// new PowerUser()
// }
//给这个类添加新的功能
def main(args: Array[String]): Unit = {
val u1 = new BaseUser()
u1.insertUser()
u1.updateUser()//添加一个新功能
}
}