scala学习之:隐式转换与隐式参数
2015-08-27 23:05
537 查看
隐式转换
隐式转换与隐式参数都是增强类库功能的一种方式,Java中使用工具类、继承的方式来实现。
隐式转换主要体现在:使用A的对象实例,调用B的方法。
我们不需要修改原来的类,就可以把新的方法附着在原来的类上。这样就增强了类本身的功能。
隐式转换一般发生在函数调用的时候,
隐式转换的代码示例:
class RichFile(val file : File){
def read = Source.fromFile(file.getPath).mkString
}
object Context{
implicit def file2RichFile(file:File) = new RichFile(file)
}
object HideType {
def main(args: Array[String]){
import Context.file2RichFile
println(new File("f:\\test.js").read)
}
}
隐式参数
object Context_Implicits{
implicit val default : String = "java"
}
object Param{
def print(context : String)(implicit language : String){
println(language +" : " + context)
}
}
object HideArg {
def main(args: Array[String]): Unit = {
Param.print("Spark")("Scala")
import Context_Implicits._
Param.print("Hadoop")
}
}
以上内容是从王家林老师DT大数据课程第59、60讲的学习笔记。
DT大数据微信公众账号:DT_Spark
王家林老师QQ:1740415547
王家林老师微信号:18610086859
百度云盘地址:http://pan.baidu.com/s/1pJA8MzL
优酷播放地址:http://v.youku.com/v_show/id_XMTI4ODY0OTkyNA==.html
51cto的播放地址:http://edu.51cto.com/lesson/id-68943.html
隐式转换与隐式参数都是增强类库功能的一种方式,Java中使用工具类、继承的方式来实现。
隐式转换主要体现在:使用A的对象实例,调用B的方法。
我们不需要修改原来的类,就可以把新的方法附着在原来的类上。这样就增强了类本身的功能。
隐式转换一般发生在函数调用的时候,
隐式转换的代码示例:
class RichFile(val file : File){
def read = Source.fromFile(file.getPath).mkString
}
object Context{
implicit def file2RichFile(file:File) = new RichFile(file)
}
object HideType {
def main(args: Array[String]){
import Context.file2RichFile
println(new File("f:\\test.js").read)
}
}
隐式参数
object Context_Implicits{
implicit val default : String = "java"
}
object Param{
def print(context : String)(implicit language : String){
println(language +" : " + context)
}
}
object HideArg {
def main(args: Array[String]): Unit = {
Param.print("Spark")("Scala")
import Context_Implicits._
Param.print("Hadoop")
}
}
以上内容是从王家林老师DT大数据课程第59、60讲的学习笔记。
DT大数据微信公众账号:DT_Spark
王家林老师QQ:1740415547
王家林老师微信号:18610086859
百度云盘地址:http://pan.baidu.com/s/1pJA8MzL
优酷播放地址:http://v.youku.com/v_show/id_XMTI4ODY0OTkyNA==.html
51cto的播放地址:http://edu.51cto.com/lesson/id-68943.html
相关文章推荐
- Android中selector和sharp应用
- SlidingDrawer源码分析
- 基于TestNG 与Selenium 的自动化测试设计与实施
- Windows内核编程基础篇之使用自旋锁
- Hadoop2.5.2 64bit 完全分布式安装
- dirname: missing operand 问题解决
- Ubuntu 开机无法自启 fcitx
- java中高级软件工程师面试总结
- JAVA编程——常用正则表达式
- JTA
- 软件自动化测试框架
- typedef struct用法总结_20150827
- Unity3D 渲染路径
- boost--smart_ptr库
- php常用函数总结2
- 运算符优先级表
- OC-多态使用介绍
- 专题复习
- 自动化测试陷阱
- k近邻matlab图示