隐式转换:编译器 自动地帮我们把一种类型数据转换为另一种类型。
例如 int -->double
他有失败的时候(double-->int),有成功的时候
Scala
implicit def X(d:Double):Int={
println("implict X 被调用了")
d.toInt
}
def main(args: Array[String]): Unit = {
var i:Int=1
i=2.1
//i=j//把Double 转入 Int
// j=i //把Int 转入Double
println(i)
}
需求
完成一个功能,让所有的字符串都能调用isPhone方法,来校验自己是不是一个手机号
Scala
class StrongString(val str:String) {
def isPhone(): Boolean = {
val reg = "1[3-9]\\d{9}".r
reg.matches(str)
}
def isID: Boolean={
val reg="".r
reg.matches(str)
}
}
//定义一个特殊的转换函数,把str===>StrongString的对象
implicit def tranform(str:String):StrongString={
new StrongString(str)
}
def main(args: Array[String]): Unit = {
// str.isPhone() //==>true
// "136a".isPhone() //==>flase
println(tranform("abc").isPhone())
}
}