欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > scala的隐式转换2

scala的隐式转换2

2025/4/11 10:18:06 来源:https://blog.csdn.net/dada248600/article/details/144412008  浏览:    关键词:scala的隐式转换2

隐士类:implicit class == 隐式转换函数 + 类

第一步:定义一个有updateUser功能的类 PowerUser
第二步: 定义一个隐式转换函数,把BaseUser --->  PowerUser

代码如下:

package test1
//隐士类:implicit class == 隐式转换函数 + 类
object y1 {class BaseUser(){def insertUser(){println("insertUser")}}//第一步:定义一个有updateUser功能的类 PowerUser//第二步: 定义一个隐式转换函数,把BaseUser --->  PowerUserimplicit class PowerUser(u:BaseUser){def updateUser(){println("updateUser")}}//  implicit def transform(u:BaseUser):PowerUser ={
//    new PowerUser()
//
//  }//给这个类添加新的功能def main(args: Array[String]): Unit = {val u1 = new BaseUser()u1.insertUser()u1.updateUser()  //添加一个新的功能}}

 目标:给字符串添加新功能

implicit函数 + 普通类StrongString
代码如下:

package test1object y2 {//目标:给字符串添加新功能//implicit函数 + 普通类StrongStringimplicit class StrongString( str: String) {def isPhone: Boolean = {val reg = "1[3-9]\\d{9}".rreg.matches(str)}}//  implicit def stringtoStrongString(str:String):StrongString ={
//    new StrongString(str)
//  }def main(args: Array[String]): Unit = {val str:String= "1234899389"val rs = str.isPhoneprintln(s"$str 的结果是$str")}}

 考试原题:

package test1
import scala.language.postfixOps
//给所有的整数添加新功能
//1.判断是否偶数
//2.阶乘 5! = 5*4*3*2*1=120object y3 {implicit class xxx(d:Int){def isEven:Boolean = {d % 2 == 0}def ! :Int = {var rs = 1for(i <-1 to d) {rs *= i}rs}}def main(args: Array[String]): Unit = {println(10.isEven)println(9.isEven)println(5!)println(5.!)println(8!)}}


 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词