Scala的隐式转换规则

一,

scala中的隐式转换规则

1.显式定义规则

2.无歧在同一作用域不可以有歧义,即当有两个变量定义的类型相同时,只能保留一个。)

3.定义域规则

4.不能多次转换规则(从源类型到目的地类型中间是一次性转换的 )

package test11
//函数的默认参数
//问题:如何动态去设置函数的默认参数
object test {
  //函数的默认参数
  def sayName(implicit str:String="小美"):Unit= {
        println(str)
  }

  //隐式参数
//    implicit val x:String = "小花~~~"
    implicit val x1:String = "波妞~~~"


  def main(args: Array[String]): Unit = {
   sayName("小帅")
   sayName()
    sayName//默认参数
  }
}

package test11

object test11_1 {
  //之前的类不要改动
  //隐式类:implicit class == 隐式转换函数 + 类
  class BaseUser(){
    def insertUser(){println("insertUser")}
  }
  //第一步:定义一个updateUser功能的类PowerUsre
  //第二步:定义一个隐式转换函数,把BaseUser ---> PowerUser

//  class PowerUser(){
//    def insertUse(){println("insertUser")}
//  }
  implicit class PowerUser(u:BaseUser){
    def updateUser(){println("updaterUser")}
  }
//  implicit def transform(u:BaseUser):PowerUser ={
//    new PowerUser()
//  }
  //给这个类添加新的功能
  def main(args: Array[String]): Unit = {
    val u1 = new BaseUser()
    u1.insertUser()
    u1.updateUser()//添加一个新功能
  }
}
相关推荐
engchina31 分钟前
Python装饰器设计模式:为函数增添风味
开发语言·python·设计模式·装饰器
熬夜加班写代码32 分钟前
SpringBoot【九】mybatis-plus之自定义sql零基础教学!
java·spring boot·后端·sql·程序员·mybatis
MoonBit月兔36 分钟前
GitHub 正式收录 MoonBit 作为一门通用编程语言!核心用户突破三万!
开发语言·github·编程语言·moonbit
闲人怪喵2 小时前
/usr/local/go/bin/go: cannot execute binary file: Exec format error
开发语言·后端·golang
Mr_Xuhhh2 小时前
第一个C++程序--(蓝桥杯备考版)
开发语言·c++·算法·蓝桥杯·visual studio
Yui_NIE4 小时前
解决core-js报错:These dependencies were not found: core-js/modules/es.array.push.js
开发语言·前端·javascript
customer087 小时前
【开源免费】基于SpringBoot+Vue.JS购物推荐网站(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·java-ee·开源
Dong雨7 小时前
ShardingSphere-JDBC
java·开发语言·数据库
闪耀迪迦`7 小时前
Scala
scala