scala的隐式转换2
隐士类:implicit class == 隐式转换函数 + 类
第一步:定义一个有updateUser功能的类 PowerUser
第二步: 定义一个隐式转换函数,把BaseUser ---> PowerUser
代码如下:
package test1
//隐士类:implicit class == 隐式转换函数 + 类
object y1 {
class BaseUser(){
def insertUser(){println("insertUser")}
}
//第一步:定义一个有updateUser功能的类 PowerUser
//第二步: 定义一个隐式转换函数,把BaseUser ---> PowerUser
implicit 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 test1
object y2 {
//目标:给字符串添加新功能
//implicit函数 + 普通类StrongString
implicit class StrongString( str: String) {
def isPhone: Boolean = {
val reg = "1[3-9]\\d{9}".r
reg.matches(str)
}
}
// implicit def stringtoStrongString(str:String):StrongString ={
// new StrongString(str)
// }
def main(args: Array[String]): Unit = {
val str:String= "1234899389"
val rs = str.isPhone
println(s"$str 的结果是$str")
}
}
考试原题:
package test1
import scala.language.postfixOps
//给所有的整数添加新功能
//1.判断是否偶数
//2.阶乘 5! = 5*4*3*2*1=120
object y3 {
implicit class xxx(d:Int){
def isEven:Boolean = {
d % 2 == 0
}
def ! :Int = {
var rs = 1
for(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!)
}
}
原文地址:https://blog.csdn.net/dada248600/article/details/144412008
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!