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

}
相关推荐
__zRainy__37 分钟前
Node系列 · Node基础:net 模块
后端·node.js
Diligently_37 分钟前
Anolis 系统更新与密码设置&磁盘扩容
java·后端·spring
kyson_41 分钟前
大文件切片上传:从“能传”到“可靠”的 Vue 3 + Java 全栈实现
后端
张龙68741 分钟前
uv 全面指南:比 pip 快 100 倍的 Python 包管理器,从安装到团队落地
后端·python
mqiqe1 小时前
线程调度与 Schedulers:Project Reactor 并发模型的核心引擎
java·开发语言·网络
用户40966601317511 小时前
Guava 不止有 Lists 和 Maps:Cache、EventBus、Multimap 实战
java·后端
xixiaoyunya2 小时前
JavaScript 异步编程全解析:从回调地狱到 async/await 的演进之路
开发语言·javascript·ecmascript
一只叫煤球的猫2 小时前
从 Java 21 到 Java 25:ThreadLocal 以外的选择—— ScopedValue
java·后端·架构
用户3169353811832 小时前
SpringBoot + Vue 项目生产环境部署完整指南
前端·后端