自学内容网 自学内容网

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)!