Scala 隐式转换 隐式参数
2018-01-13 12:13
351 查看
隐式转换
所谓隐式转换函数(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 t 4000 op.itning.implicits.Test2._ a } def a(implicit a: String): Unit = { println(a) } }
执行结果
隐式参数
相关文章推荐
- Scala入门到精通——第十八节 隐式转换与隐式参数(一)
- Scala进阶源码实战之八——隐式转换和隐式参数
- Scala入门之隐式转换与隐式参数
- scala进阶18-隐式转换-隐式参数
- scala进阶19-隐式参数+隐式转换
- scala总结(4) -- 隐式转换以及隐式参数
- Scala隐式转换和隐式参数
- 第63讲Scala中隐式参数与隐式转换的联合使用解析
- Scala中的隐式转换、隐式参数、隐式类
- Scala中隐式参数与隐式转换的联合使用实战详解及其在Spark中的应用源码解析之Scala学习笔记-51
- scala入门-10 隐式转换、隐式参数、隐式类
- Scala入门学习之隐式转换和隐式参数
- scala入门-10 隐式转换、隐式参数、隐式类
- Scala深入浅出进阶经典 第61讲:Scala中隐式参数与隐式转换的联合使用实战详解及其在Spark中的应用源码解析
- Scala隐式转换和隐式参数
- Scala--隐式转换和隐式参数
- Step into Scala - 26 - 隐式参数,隐式转换与 DSL
- scala有多个隐式转换或隐式参数匹配的是后会发生什么,我很好奇,试验了一把
- 【Scala类型系统】隐式转换与隐式参数
- Scala 深入浅出实战经典 第61讲:Scala中隐式参数与隐式转换的联合使用实战详解及其在Spark中的应用源码解析