系统自动完成的:把一种类型的数据转成了另一种类型的数据。
不是所有的类型都可以执行隐式转换
函数的参数类型 和 返回值类型是重要的,它约定了把什么类型转成什么类型
Scala
//张三的函数
def getAge():Double={
8.5
}
//函数名:tranform 不重要
//函数的参数类型 和 返回值类型是重要的,它约定了把什么类型转成什么类型
implicit def tranform11111(d:Double): Int = {
println("implicit 被调用了")
d.toInt
}
//小花
def main(args: Array[String]): Unit = {
val i:Int = 1
val d:Double = i //int -> double
val age:Int = getAge()
println("今年",age)
}
sayName
Scala
object Test_sayName {
//给参数设置一个默认值:如果用户不传入,就使用这个值
def sayName(implicit name:String = "小花"):Unit={
println(s"我叫:$name")
}
//隐式值:能够自己设置函数的参数默认值,而不是在代码中固定写死
//需求:能够自己设置函数的参数默认值
//1.在函数的默认参数前面补充关键字:implicit
//2.在定义变量的前面 补充关键字: implicit
//3.调用函数时,不加()
implicit val x: String = "小李"
def main(args: Array[String]): Unit = {
sayName
// sayName("小明")
//
// sayName()
}
}
判断手机号码
需求:让字符串增加一个功能:isPone() 检查当前字符串是否是一个合格的手机号码
Scala
object Test_隐式sayName2 {
def main(args: Array[String]): Unit = {
//定义一个函数,用来检测输入的字符串是否是一个手机号
def isPone(str:String):Boolean={
//1.定义一个正则
val reg = "1[3-9]\\d{9}".r
// 2.reg.matches(str)
reg.matches(str)
}
println(isPone("1346824y5973"))
}
}