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()//添加一个新功能
  }
}
相关推荐
软件技术NINI几秒前
基于SpringBoot和Vue的项目评审系统
javascript·vue.js·spring boot·后端·spring·毕业设计·毕设
无奈何杨9 分钟前
风控决策系统扩展点,自定义函数配置
后端
回家路上绕了弯24 分钟前
AI Coding 中,人在做什么?
后端
AI全栈学习助手31 分钟前
告别“转圈等待”:Spring Boot + SSE 让大模型像 ChatGPT 一样流式输出
java·人工智能·spring boot·后端·aigc
时间的拾荒人39 分钟前
CMake 实战指南:从基础语法到静态库/动态库制作与链接
开发语言·c++·面试
IT_陈寒1 小时前
React实战技巧总结
前端·人工智能·后端
xyouyuweizhu1 小时前
Java InetAddress 详解:从 IP 地址表示到主机名解析
java·开发语言·python
陈随易8 小时前
Postman 被曝自动往 Claude Code 和 Codex 装插件
前端·后端·程序员
布莱克60510 小时前
C/C++ 中变量的声明与定义:区别、联系与常见误区
c语言·开发语言·c++·声明·定义
云-缩影10 小时前
拆解 AI 图像生成应用的后端架构:ECS、OSS 和大模型 API 怎么配合
java·spring boot·后端