第59讲:Scala中隐式转换初体验
今天学习了下隐式转换的内容。所谓隐式转换,就是说,一个实例拥用1 2 3方法,但是当它需要4方法的时候,它没有,但是却可以通过转换成另一种类型来调用4方法,而且这种转换是自动转换不需要人为干预的,这种形为就叫做隐式转换。让我们通过实例来分析一下:
import java.io.File
import scala.io.Source
class RichFile(val file:File){
def read = Source.fromFile(file.getPath).mkString
}
object Context{
implicit def file2RickFile(file:File) = new RichFile(file)//将File转换成RichFile
}
object test59 {
def main(args:Array[String]){
import Context.file2RickFile
println (new File("E:\\text.txt").read)
}
}
首先,我们定义一个class RichFile,当的参数类型是File,类拥有read方法。
然后定义一个单例对像Context,它拥有一个隐式方法,file2RichFile,此方法会将File类型的file传给类RichFile,实例化成RichFile的对像。
然后在main方法中,我们导入此方法。
接着,我们新建一个File类型的对像,让它去调用read方法。但是此file没有read方法,这时,编译器会在main方法体内寻找可以实现read方法的方法,也就是file2RichFile,通过此方法,将file实例化成RichFile的对像,这时,RichFile类型的file就拥有了read方法,可以正常调用了。
分享下更多的scala资源吧:
2,《Spark纯实战公益大讲坛》http://pan.baidu.com/s/1sLeVk
3,《Docker公益大讲坛》http://pan.baidu.com/s/1hq0GztU
4,《spark亚太研究院spark公益大讲堂》http://pan.baidu.com/s/1i30Ewsd
5, DT大数据梦工厂spark和scala的所有视频、PPT和代码在百度云盘的链接:http://pan.baidu.com/share/home?uk=4013289088#category/type=0&qq-pf-to=pcqq.group
第59讲:Scala中隐式转换初体验的更多相关文章
- Scala 深入浅出实战经典 第65讲:Scala中隐式转换内幕揭秘、最佳实践及其在Spark中的应用源码解析
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...
- scala中隐式转换之总结
1.隐式转换的时机: 1.当方法中的参数的类型与目标类型不一致时 2.当对象调用类中不存在的方法或成员时,编译器会自动将对象进行隐式转换 2.隐式解析机制 即编译器是如何查找到缺失信息的,解析具有 ...
- scala中隐式转换之隐式转换调用类中本不存在的方法
/** * Created by root * Description : 隐式转换调用类中本不存在的方法 */ class Person(name : String){ def getPersonN ...
- scala中隐式转换之隐式类
/** * Created by root * Description :隐式类: * 1.其所带的构造参数有且只能有一个:并且构造器的参数是转换之前的对象 * 2.隐式类必须被定义在类,伴生对象和包 ...
- scala中隐式转换之隐式值和隐式视图
/** * Created by root * Description : 隐式值和隐式视图 */ object ImplicitTest { def main(args: Array[String] ...
- Scala 深入浅出实战经典 第61讲:Scala中隐式参数与隐式转换的联合使用实战详解及其在Spark中的应用源码解析
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载: 百度云盘:http://pan.baidu.com/s/1c0noOt ...
- Scala 深入浅出实战经典 第63讲:Scala中隐式类代码实战详解
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...
- Scala 深入浅出实战经典 第64讲:Scala中隐式对象代码实战详解
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...
- Scala 深入浅出实战经典 第60讲:Scala中隐式参数实战详解以及在Spark中的应用源码解析
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...
随机推荐
- 一看就懂得移动端rem布局、rem如何换算
这里使用了js控制根元素的font-size大小,然后进行rem换算,在js代码后面会说明以下问题. 1.如何进行rem运算? 2.如果纯js控制根元素用rem布局会出现的小问题,如何解决? 3.如有 ...
- js 日期对象Date以及传参
创建一个日期对象,日期对象可传参new Date() 创建日期对象getFullYear() 获取年份 getMonth() 获取月份 返回值是 0(一月) 到 11(十二月) 之间的一个整数 get ...
- JavaScript取得Format后的当前时间
function getNowFormatDate() { var date = new Date(); var seperator1 = "-"; var seperator2 ...
- ElasticSearch 嵌套映射和过滤器及查询
ElasticSearch - 嵌套映射和过滤器 Because nested objects are indexed as separate hidden documents, we can’t q ...
- Mapped Statements collection does not contain value fo
Mapped Statements collection does not contain value for后面是什么类什么方法之类的: 错误原因有几种: 1.mapper.xml中没有加入name ...
- UIImagePickerControllerDelegate---ActionSheet---获得设备型号
<pre name="code" class="java">//IOS主要用的是UIImagePickerControllerDelegate这个事 ...
- 支付宝App支付签名和验签
代码: using CMS.Utility.ReturnResult; using OAuthWebAPI.Package; using Common; using System; using Sys ...
- protobuf初体验
概念介绍 Protocol buffers 是google公司的与语言无关.与平台无关的.可扩张的为序列化话结构数据,就像xml一样,办事更加的小巧.快速.简单.Protocol buffers 目前 ...
- console.log()与alert()的区别
1.alert() a.有阻塞作用,不点击确定,后续代码无法继续执行 b.alert只能输出string,如果alert输出的是对象,会自动调用toString()方法 eg:alert([1,2,3 ...
- (一)startup.bat
那么startup.bat(// TODO startup.sh暂缓)启动后发生了什么呢? @echo off rem Licensed to the Apache Software Foundati ...