Scala隐式函数|隐式参数|隐式类|隐式处理机制

隐式函数

  1. 当编译器第一次编译失败的时候,会在当前的环境中查找能让代码编译通过的方法,用于将类型进行转换,实现二次编译
  2. 隐式转换可以在不需改任何代码的情况下,扩展某个类的功能。

在这里插入图片描述

隐式参数

  1. 普通方法或者函数中的参数可以通过implicit关键字声明为隐式参数,调用该方法时,就可以传入该参数,编译器会在相应的作用域寻找符合条件的隐式值。
  2. 同一个作用域中,相同类型的隐式值只能有一个
  3. 编译器按照隐式参数的类型去寻找对应类型的隐式值,与隐式值的名称无关。
  4. 隐式参数优先于默认参数

在这里插入图片描述

隐式类

  1. 在Scala2.10后提供了隐式类,可以使用implicit声明类,隐式类的非常强大,同样可以扩展类的功能,在集合中隐式类会发挥重要的作用。
  2. 其所带的构造参数有且只能有一个
  3. 隐式类必须被定义在“类”或“伴生对象”或“包对象”里,即隐式类不能是顶级的。

在这里插入图片描述

隐式处理机制

  1. 首先会在当前代码作用域下查找隐式实体(隐式方法、隐式类、隐式对象)。(一般是这种情况)
  2. 如果第一条规则查找隐式实体失败,会继续在隐式参数的类型的作用域里查找。类型的作用域是指与该类型相关联的全部伴生对象以及该类型所在包的包对象。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值