首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
物联网/工业互联网
›
物联网
›
Scala的隐式转换
返回列表
发新帖
Scala的隐式转换
[复制链接]
发表于 2025-12-9 18:09:17
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
一:
1.隐式转换概述:
隐式转换与模式匹配都是scala中提供的比力强盛的特性。
2.隐式转换的界说:
在实际编程中,要想把一个不匹配的范例赋值,须要先转换成匹配的范例。scala的隐式转换会主动将一种范例的数据转换成另一种范例。隐式转换就是scala主动转换。对于户编程而言不可见,不须要手动编写转换
代码
。
3.scala隐式转换声明
scala的隐式转换声明关键字为implicit
package test10
object test10_4 {
class StrongString(str: String) {
def isPhone(str: String): Boolean = {
val reg = "1[3-9]\\d{9}".r
reg.matches(str)
}
def isEmail:Boolean={
val reg="r"
reg.matches(str)
}
}
implicit def strongString(str:String):StrongString ={
new StrongString(str)
}
def main(args: Array[String]): Unit = {
val str: String = "13239612335"
//需求:给字符串补充一个
功能
,isPhone。判断它是不是一个手机号码
val rs = str.isPhone
// val rs = (new StrongString(str)).isPhone
// val rs = stringtoStrongString(str).isPhone
println(s"$str 的检查结果是:$rs")
}
}
复制
代码
package test10
//隐式值
object test10_3 {
//函数的默认参数
//函数的默认参数:小花
def sayName(implicit name:String="小花"):Unit ={
println(s"我叫:$name")
}
//需求更 改函数的默认值(不传入这个值的时候,用到的值),不要写死
//步骤:
//1.定义函数的默认参数时,添加implicit
//2.需要修改这个默认值时,定义一个同类型的隐式值:implicit 修改变量
implicit val xxx: String = "小明明"
// implicit val defaultValue:String="小明"
def main(args: Array[String]): Unit = {
sayName("无敌小旋风")
sayName
sayName//小明
}
}
复制
代码
package test10
//潜规则:老代码不要改!!!可以加新代码
object test10_2 {
//小明
def getAge():Double ={
19.5
}
//implicit 隐式转换
//函数名字不重要
//重要的是:参数类型和返回值类型!!!
//隐式函数:implicit修饰的函数
//特点:1.自动被调用 2.函数名字不重要,重要的是,参数类型和返回值类型!
implicit def abc(d:Double):Int ={
d.toInt
}
//小花
def main(args: Array[String]): Unit = {
// val i :Int = doubleToInt(getAge())
val i:Int = getAge()
println(i)
}
}
复制代码
package test10
object test10_5 {
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 ={
// println("偷偷调用implicit")
new StrongString(str)
}
def main(args: Array[String]): Unit = {
println("136a".isPhone())
}
}
复制代码
回复
使用道具
举报
返回列表
浏览过的版块
数据仓库与分析
区块链
SAAS
人工智能
DevOps与敏捷开发
分布式数据库
SQL-Server
Java
云原生
用多少眼泪才能让你相信
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表