第66讲scala 中伴生对象的隐式转换
2015-07-24 22:39
417 查看
信息来源于 DT大数据梦工厂微信公众号:DT_Spark
代码如下:
过程解析
当 new File_Implicit2 对象 执行read 过程中,并没有import 导入隐式转换相关方法,而是 通过 File_Implicit2 的伴生对象来完成。
当代码改为如下语句时:
代码执行的 不是伴生对象File_Implicit2 中的隐式转换,而是 File_Implicit3 中的。
参考资料
DT大数据微信公众账号:DT_Spark
代码如下:
/** * 伴生对象 中的隐式方法 * Created by zhiwang on 2015/7/24. */ import java.io.File import scala.io.Source class RichFile2(val file:File) { def read = Source.fromFile(file.getPath).mkString } class File_Implicit2(path:String) extends File(path) object File_Implicit2{ implicit def file2RichFile(file:File) = new RichFile2(file) // file => RichFile2 } object Implicits_Internals { def main(args: Array[String]) { println(new File_Implicit2("I:\\aa.txt").read ) } }
过程解析
当 new File_Implicit2 对象 执行read 过程中,并没有import 导入隐式转换相关方法,而是 通过 File_Implicit2 的伴生对象来完成。
当代码改为如下语句时:
object File_Implicit3{ implicit def file2RichFile(file:File) = new RichFile2(file) // file => RichFile2 } object Implicits_Internals { def main(args: Array[String]) { import File_Implicit3._ println(new File_Implicit2("I:\\aa.txt").read ) } }
代码执行的 不是伴生对象File_Implicit2 中的隐式转换,而是 File_Implicit3 中的。
参考资料
DT大数据微信公众账号:DT_Spark
相关文章推荐
- jvm相关参数,调优
- 移动页面滚动穿透如何解决
- Objective C Bridging header —— swift MD5
- error C2275 将此类型用作表达式非法
- Functional Programming in Javascript 中文翻译 —— 目录和介绍
- 十四、C# 支持标准查询运算符的集合接口
- MyBatis知多少(17)MyBatis和JDBC
- shell脚本:shell的基本元素-4 华丽的printf输出
- Java: Class Variable/Static Variable
- hdoj205716进制的两个数相加
- Summary for week2
- Java: Class Variable/Static Variable
- win7下Qt5使用mysql C++编程配置
- win7下Qt5使用mysql C++编程配置
- C语言栈的基本操作(链表)
- BP神经网络(检测故障的实例)
- 我们一起学习WCF 第八篇回调函数
- 聪明人驱动开发[转]
- 如何写出优雅的Python(二)
- mybitis利用association 实现延迟加载