scala进阶19-隐式转换内幕
2016-08-19 01:00
288 查看
import scala.io.Source import java.io.File class RicherFile(val file: File) { def read = Source.fromFile(file.getPath).mkString } class MyFile(path: String) extends File(path) object MyFile { implicit def file2RicherFile(file: File) = new RicherFile(file) } object Implicits_Internals extends App { /** * 1、new MyFile("/tmp/test.txt")构造一个MyFile对象 * 2、调用MyFile对象中的read方法,发现MyFile对象中没有read方法 * 3、但是上下文中也没有隐式类的导入 * 4、那么编译器查找MyFile伴生对象中有没有隐式转换,发现有 * 5、编译器开始尝试类型匹配,发现隐式函数中有对File的隐式转换 * 6、讲MyFile对象转换成RicherFile对象,即可调用read */ println(new MyFile("/tmp/test.txt").read) }
相关文章推荐
- scala进阶19-隐式参数+隐式转换
- Scala深入浅出进阶经典 第65讲:Scala中隐式转换内幕操作规则揭秘、最佳实践及其在Spark中的应用源码解析
- Scala深入浅出进阶经典 第59讲:Scala中隐式转换初体验实战详解以及隐式转换在Spark中的应用源码解析
- Scala深入浅出进阶经典 第61讲:Scala中隐式参数与隐式转换的联合使用实战详解及其在Spark中的应用源码解析
- scala进阶20-隐式转换至Ordered与Ordering
- Scala深入浅出进阶经典 第62讲:Scala中上下文界定内幕中的隐式参数与隐式参数的实战详解及其在Spark中的应用源码解析
- Scala中隐式转换内幕操作规则揭秘
- scala进阶18-隐式转换-隐式参数
- Scala进阶之隐式转换作用域等问题
- 65.Scala中隐式转换内幕操作规则揭秘、最佳实践及其在Spark中的应用源码解析
- Scala进阶源码实战之八——隐式转换和隐式参数
- 大数据Spark “蘑菇云”行动前传Scala专家之路第28课:Scala隐式转换内幕实践解密
- Scala 深入浅出实战经典 第65讲:Scala中隐式转换内幕揭秘、最佳实践及其在Spark中的应用源码解析
- Scala中隐式转换内幕操作规则揭秘、最佳实践及其在Spark中的应用源码解析之Scala学习笔记-55
- scala 随笔(4) implicit 隐式转换 和冲突解决
- IDEA的auto import 与 Scala的隐式转换
- 关于 Scala 隐式转换必读的一篇官方圣典
- scala的隐式转换学习总结(详细)
- Scala--隐式转换和隐式参数
- Scala之隐式转换implicit详解