在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 小时前
从输入 juejin.cn 到看到页面:DNS、Nginx、服务器集群与 CDN 到底在做什么?
后端·mysql
东风破_4 小时前
从 0 设计一个博客数据库:用户、头像与文章表应该怎么建?
后端·mysql
「QT(C++)开发工程师」4 小时前
C++ 11 常用for循环
开发语言·c++
我还记得那天4 小时前
0 初识C++
开发语言·c++
大鸡腿同学4 小时前
黄仁勋点透的 AI 真相:能实现你知道但做不到的,却实现不了你不知道的
后端
FfHUCisI4 小时前
Go 编译过程全景
开发语言·后端·golang
FfHUCisI4 小时前
Golang 语法分析与 AST:Parser 与 go/ast
开发语言·后端·golang
lemon_sjdk5 小时前
ObjectProperty
java·开发语言·算法
大模型码小白5 小时前
Spring AI Tool 实现自然语言操作 MySQL 数据库详解
服务器·开发语言·数据库·人工智能·python·mysql·spring