Scala 隐式转换 隐式参数

隐式转换

所谓隐式转换函数(implicit conversion function)指的是那种以implicit 关键字声明的带有单个参数的函数

首先,看这个例子

implicit def file2RichFile(from: File): RichFile = new RichFile(from)

这是一个隐式转换方法,方法名为 file2RichFile 意为File转换成RichFile类型,该方法有一个参数为File类型,方法将from这个参数传入RichFile构造参数中

该方法需要写在对象中

object Test {
  implicit def file2RichFile(from: File): RichFile = new RichFile(from)
}

RichFile类

class RichFile(val from: File) {
  def read: String = Source.fromFile(from.getPath).mkString
}

测试:

object Test {
  def main(args: Array[String]): Unit = {
    import top.itning.implicits.Test2._
    new File("").read
  }
}

File 类本身没有read方法,但是用隐式转换将File类转换成了RichFile 类调用了read 方法

隐式参数

函数或方法可以带有一个标记为implicit的参数列表.这种情况下,编译器将会查找缺省值,提供给该函数或方法

首先定义一个类型为String类型的隐式函数

object Test {
  implicit val str: String = "隐式参数"
}

在方法a中的参数标记为implicit,则在main方法中调用该方法不传参则编译器会查找对应类型的隐式参数,但前提需要导入

object Test {
  def main(args: Array[String]): Unit = {
    //导入
    import top.itning.implicits.Test2._
    a
  }

  def a(implicit a: String): Unit = {
    println(a)
  }

}

执行结果

隐式参数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值