Scala的隐式转换

Scala 复制代码
package test38

object test {
  //复习隐式转换
  //隐式转换:编译器 偷偷的,自动的帮我们把一种数据类型转换为另一种类型
  //         例如  int-->double
  //他有失败的时候(double-->int),有成功的时候
  //明确的 把double 转成 int

  implicit def X(d:Double):Int={
    println("implicit X 被调用了")
    d.toInt
  }

  def main(args: Array[String]): Unit = {
    var i:Int=1
    var j:Double=2.1
    i=j//把Double转入Int
//    j=i//把Int转入Double

    println(i)
  }

}

应用场景

Scala 复制代码
package test38
//需求
//完成一个功能,让所有字符串都能调用isPhone 方法,来校验自己是不是一个手机号
object test1 {

    class StrongString(val str:String){
    def isPhone(): Boolean = {
      val reg = "1[3-9]\\d{9}".r
      reg.matches(str)
    }
  }
  implicit def tranfrom(str: String):StrongString={
    new StrongString(str)

  }

  def main(args: Array[String]): Unit = {
    val str="13612345678"
//    println(isPhone(str))
//    println(isPhone("abc"))
//    println(new StrongString(str)).isPhone())
    println(tranfrom(str="abc").isPhone())
    println(str.isPhone())
    println("136a".isPhone())
  }

}

验证身份证号

Scala 复制代码
package test38
//需求
//完成一个功能,让所有字符串都能调用isPhone 方法,来校验自己是不是一个手机号
object test1 {

    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)
      }
  }
  implicit def tranfrom(str: String):StrongString={
    new StrongString(str)

  }

  def main(args: Array[String]): Unit = {
    val str="13612345678"
//    println(isPhone(str))
//    println(isPhone("abc"))
//    println(new StrongString(str)).isPhone())
    println(tranfrom(str="abc").isPhone())
    println(str.isPhone())
    println("136a".isPhone())
  }

}
相关推荐
迷知悟道6 分钟前
java面向对象的四大核心特征之继承---超详细(保姆级)
java
lixn7 分钟前
深入理解JVM字节码:invokedynamic
java·jvm
数据智能老司机10 分钟前
探索Java 全新的线程模型——结构化并发
java·性能优化·架构
数据智能老司机10 分钟前
探索Java 全新的线程模型——作用域值
java·性能优化·架构
数据智能老司机13 分钟前
探索Java 全新的线程模型——并发模式
java·性能优化·架构
何中应16 分钟前
分布式事务的两种解决方案
java·分布式·后端
数据智能老司机19 分钟前
探索Java 全新的线程模型——虚拟线程
java·性能优化·架构
老赵的博客1 小时前
QT的项目pro qmake编译
开发语言·qt
SimonKing1 小时前
无需重启!动态修改日志级别的神技,运维开发都哭了
java·后端·程序员
杨杨杨大侠1 小时前
第3篇:配置管理的艺术 - 让框架更灵活
java·spring·log4j