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())
  }

}
相关推荐
可涵不会debug1 天前
C++ std::bind 实战教程:线程池、回调场景全覆盖
linux·开发语言·c++
不正经的码狗1 天前
Java 开发环境搭建与 Eclipse 使用速通教程
java·开发语言·eclipse
用户8181870627461 天前
第37章 Java应用在K8s里的经典坑:容器内存/CPU limit与JVM参数不匹配导致的OOMKilled
java·后端
马剑威(威哥爱编程)1 天前
【AI全栈后端12-03】Spring Boot 用多模型路由把智能客服成本降下来
java·人工智能·spring boot
阿钱真强道1 天前
24 嵌入式操作系统 | 项目启动与环境准备(PyQt5 / Flask 两个“最小可跑“)
开发语言·qt·flask·架构设计·协议契约
霸道流氓气质1 天前
AI模型幻觉检测与抑制完全指南:从规则引擎到RAG对比的Java生产级实战
java·开发语言·人工智能
前端 贾公子1 天前
LangChain核心组件 == 提示词(Prompts)
开发语言·c#
niucloud-admin1 天前
JAVA V6 多商户商城 开发文档——手机端前端
java·开发语言·前端
茉莉玫瑰花茶1 天前
GO [ 并发 ]
开发语言·后端·golang
云安全助手1 天前
自建接入VS聚合平台:企业 AI 调用的选型思路与迁移成本拆解
java·大数据·数据库·人工智能·ai大模型