在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
//  }
//

}
相关推荐
badhope2 小时前
Mobile-Skills:移动端技能可视化的创新实践
开发语言·人工智能·git·智能手机·github
码云数智-园园3 小时前
微服务架构下的分布式事务:在一致性与可用性之间寻找平衡
开发语言
C++ 老炮儿的技术栈4 小时前
volatile使用场景
linux·服务器·c语言·开发语言·c++
hz_zhangrl4 小时前
CCF-GESP 等级考试 2026年3月认证C++一级真题解析
开发语言·c++·gesp·gesp2026年3月·gespc++一级
大阿明4 小时前
Spring Boot(快速上手)
java·spring boot·后端
Liu628884 小时前
C++中的工厂模式高级应用
开发语言·c++·算法
IT猿手4 小时前
基于控制障碍函数的多无人机编队动态避障控制方法研究,MATLAB代码
开发语言·matlab·无人机·openclaw·多无人机动态避障路径规划·无人机编队
AI科技星4 小时前
全尺度角速度统一:基于 v ≡ c 的纯推导与验证
c语言·开发语言·人工智能·opencv·算法·机器学习·数据挖掘
sunwenjian8864 小时前
Java进阶——IO 流
java·开发语言·python
波特率1152005 小时前
const关键字与函数的重载
开发语言·c++·函数重载