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

}
相关推荐
咸鱼翻身了么1 分钟前
大文件上传-spark-md5
前端·后端
报错小能手6 分钟前
ios开发方向——swift并发进阶核心 Task、Actor、await 详解
开发语言·学习·ios·swift
共享家95276 分钟前
C++ 日志类设计
linux·c++·后端
小辉同志12 分钟前
208. 实现 Trie (前缀树)
开发语言·c++·leetcode·图论
A-刘晨阳12 分钟前
当数据学会“秒回“:工业4.0时代的实时计算革命
开发语言·数据库·perl
掘金者阿豪12 分钟前
一次 AI 调用 15 万 Token 只花了 \$0.058?彻底搞懂 Token、缓存读、补全计费机制!(附完整架构图)
后端
沐知全栈开发13 分钟前
Lua 基本语法
开发语言
程序员柒叔16 分钟前
OpenClaw 踩坑记:Cron 任务 Feishu 推送失败
后端·github
小李子呢021118 分钟前
前端八股JS---ES6新增内容
开发语言·javascript·ecmascript
AskHarries22 分钟前
在 AI 快速发展的今天,“人还重要吗?
后端