当前位置: 首页 > news >正文

Scala-隐式转换

系统自动完成的:把一种类型的数据转成了另一种类型的数据。

不是所有的类型都可以执行隐式转换

函数的参数类型 和 返回值类型是重要的,它约定了把什么类型转成什么类型

//张三的函数def getAge():Double={8.5}//函数名:tranform 不重要//函数的参数类型 和 返回值类型是重要的,它约定了把什么类型转成什么类型implicit def tranform11111(d:Double): Int = {println("implicit 被调用了")d.toInt}//小花def main(args: Array[String]): Unit = {val i:Int = 1val d:Double = i //int -> doubleval  age:Int = getAge()println("今年",age)}

sayName

object Test_sayName {//给参数设置一个默认值:如果用户不传入,就使用这个值def sayName(implicit name:String = "小花"):Unit={println(s"我叫:$name")}//隐式值:能够自己设置函数的参数默认值,而不是在代码中固定写死//需求:能够自己设置函数的参数默认值//1.在函数的默认参数前面补充关键字:implicit//2.在定义变量的前面 补充关键字: implicit//3.调用函数时,不加()implicit val x: String = "小李"def main(args: Array[String]): Unit = {sayName
//    sayName("小明")
//
//    sayName()}}

判断手机号码

需求:让字符串增加一个功能:isPone() 检查当前字符串是否是一个合格的手机号码
 

object Test_隐式sayName2 {def main(args: Array[String]): Unit = {//定义一个函数,用来检测输入的字符串是否是一个手机号def isPone(str:String):Boolean={//1.定义一个正则val reg = "1[3-9]\\d{9}".r// 2.reg.matches(str)reg.matches(str)}println(isPone("1346824y5973"))}}

隐式对象

object Test_隐式对象 {case class DatabaseConfig(driver:String,url:String)//隐式对象//格式:就是在对象前面加一个implicit//作用:给函数当默认值implicit object MySqlConfig extends DatabaseConfig(driver="mysql.jdbc",url="localhost:3306")//定义一个连接数据库的函数def getCon (implicit config: DatabaseConfig): Unit = {println(config)}def main(args: Array[String]): Unit = {println(MySqlConfig)getCon//使用默认值getCon(DatabaseConfig("sqlite","localhost"))//使用自己定义的值}
}

隐式类

隐式类 == 一个类 + 一个隐式转换函数

格式:在class的前面,添加implicit

要点:要有一个参数,就要待被转换的类型,返回的类型就是当前的类

object Test_隐式类{// implicit class A{ }implicit class X(s:String){println("构造器被调用了...")def testabc:Unit = {println("abc......",s)}}def main(args: Array[String]): Unit = {"abcddd".testabc}
}


http://www.mrgr.cn/news/79469.html

相关文章:

  • 燃气轮机燃烧室:氢气燃烧
  • vue.config.js配置参数说明新手教程
  • HTML5 第五章
  • STL之适配器(adapters)_下
  • 产品经理的投资理财课:开放式基金和封闭式基金
  • 算法-二进制和位运算
  • “切片赋值”创建列表批量操作“新”方法(Python)
  • JDK17 CompletableFuture
  • shell自动显示当前git的branch
  • [机器学习] 监督学习之线性回归与逻辑回归
  • C++ 完美转发和左值右值
  • 利用高德地图API,如何在PHP与vue3中实现地图缩放功能
  • UE5.5 Geometry库平面切割原理分析
  • Vue3+Vite+ElementPlus 构建 笔记
  • 深入理解 Spring MVC 中的 @RequestBody 注解
  • AI职位对项目经验有哪些具体要求?
  • 【力扣】647.回文子串
  • 【论文相关】期刊/会议 信息检索——IEEE各期刊投稿要求(待完善)
  • leetcode399:除法求值
  • AGCRN论文解读
  • 【调试工具】USB 转 UART 适配器(USB 转 TTL)
  • 【数字电路与逻辑设计】实验五 4人表决器
  • Javascript Clipper library, v6(介绍目录)
  • 代码整洁之道学习
  • 「Mac玩转仓颉内测版44」小学奥数篇7 - 二元一次方程组求解
  • C#加速Bitmap存图