在SCala中隐式转换的理解与应用

复制代码
package Scala12_5


//隐式转换的作用是什么?
//编译器自动滴,偷偷滴,把数据类型从A ——>B
//有可能会成功,也有可能失败
//implicit:隐式转换
object Scala12_05 {
  //  def main(args: Array[String]): Unit = {
  //val i : Int = 1
      把Int类型,转成Double类型
  //    val b:Double = i
  //
  //
  //    val d:Double = 1.2
  //    val j:Int = d
  //
  //  }


  //  def getAge(): Double = {
  //    19.5
  //  }
  //
  //  def main(args: Array[String]): Unit = {
  implicit 隐式转换
      函数名字不重要
      重要的是,参数类型和返回值类型
  隐式函数:implicit修饰的函数
      特点:1 自动被调用 2 函数名字不重要,重要的是,参数类型和返回值类型
  //    implicit def abs(d: Double): Int = {
  //      d.toInt
  //    }
  //
  //    val i: Int = getAge()
  //    println(i)
  //  }


  //  隐式值


  //  函数的默认参数
  //  函数的默认值:小花
  //   def sayName(implicit  name: String = "小花"): Unit = {
  //        println(s"我叫:$name")
  //      }
  //  //     需求:更改函数参数的默认值(不传入这个值的时候,用到的值),不要写死
  //  //      步骤:
  //  //      1.定义函数的默认参数时,添加implicit
  //  //      2.需要修改这个默认值时,定义一个同类型的 隐式值: implicit修饰变量
  
    implicit val xx:String = "小明明"
  //
  //  def main(args: Array[String]): Unit = {
  //    sayName("小小")
  //    sayName
  //    sayName
  //
  //  }

  //开始你的代码....
  implicit 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 xxxx(str: String): StrongString = {
//    new StrongString(str)
//  }

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

}
相关推荐
似水流年流不尽思念3 分钟前
MongoDB 有哪些索引?适用场景?
后端·mongodb
MacroZheng5 分钟前
横空出世!MyBatis-Plus 同款 ES ORM 框架,用起来够优雅!
java·后端·elasticsearch
武子康6 分钟前
大数据-100 Spark DStream 转换操作全面总结:map、reduceByKey 到 transform 的实战案例
大数据·后端·spark
bobz96510 分钟前
网段分配
后端
bobz96515 分钟前
VRRP 负载均衡:一个网段多个网关(网关数量和交换机数目一致:一般是两个)
后端
bobz96518 分钟前
VRRP 简记
后端
冯仙笙25 分钟前
统一支付入口集成六种支付方式
后端
无双_Joney37 分钟前
[更新迭代 - 1] Nestjs 在24年底更新了啥?(功能篇)
前端·后端·nestjs
泉城老铁1 小时前
idea 优化卡顿
前端·后端·敏捷开发
福大大架构师每日一题1 小时前
RustDesk 1.4.2 版本发布:新增增量文件传输与光标显示功能
后端