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

}

执行结果

隐式参数
发布了118 篇原创文章 · 获赞 10 · 访问量 7万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览