博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DT大数据梦工厂 第59,60,61讲
阅读量:4656 次
发布时间:2019-06-09

本文共 1956 字,大约阅读时间需要 6 分钟。

王家林亲授《DT大数据梦工厂》大数据实战视频“Scala深入浅出实战经典”视频、音频和PPT下载!第59讲:Scala中隐式转换初体验实战详解以及隐式转换在Spark中的应用源码解析

百度云:http://pan.baidu.com/s/1hqlKAzU
腾讯微云:http://url.cn/fgaGai
360云盘:http://yunpan.cn/cc6hEwddWetaY 访问密码 af7e
本节王老师讲了隐式转换,隐式转换的作用相当于门面设计模式,是如果一个类A里没有方法b(),但是A却想拥有这个方法b(),而这个方法b()在另一个类B中,就可以把A隐式转换成B。
class RichFile(file:File){//RichFile代表类B而File代表类A
def read=Source.fromFile(file.getPath()).mkString//File没有read方法,所以要转换。
}
object Context{//表示File可以隐式转换成RichFile
implicit def file2RichFile(file:File)=new RichFile(file)
}
object Hello_Implicit_Conversions{
def main(args: Array[String]){
import Context.file2RichFile//在main作用域下引入隐式转换的方法
println(new File("E:\\hello.txt").read)//如果没有上面一句编译器正常是会报错的,但是当编译器要完成编译的时候,会看整个作用域里是否有隐式转换,如果发现一个伴生对象里面有implicit这样的标识,就会看这个方法是否与目标方法匹配,发现有read,并且是把File转换成RichFile,则编译通过,这个就会调用RichFile里面的read方法,打印出hello.txt的内容。
}
}
王家林亲授《DT大数据梦工厂》大数据实战视频“Scala深入浅出实战经典”视频、音频和PPT下载!第60讲:Scala中隐式参数实战详解以及隐式参数在Spark中的应用源码解析
百度云:http://pan.baidu.com/s/1pJA8MzL
腾讯微云:http://url.cn/Vf6n5m
360云盘:http://yunpan.cn/cc6aUFUA7aKRq 访问密码 c540
本节王老师讲了隐式参数。这个参数就好比一个方法的缺省参数,如果传入2个参数,其中第二个为隐式参数,则这个方法当传入2个参数就按2个参数的方法实现,如果传入第一个参数,就把第二个设一个缺省的参数。这个缺省参数的值的传入是需要在调用这个方法的作用域里导入一个类的伴生对象,这个类的伴生对象就是用来寻找这个隐式参数的值的。
object Context_Implicits{
implicit val default:String="java"
}
object Param{
def print(content:String)(implicit language:String){
println(language+":"+content)
}
}
object Impl{
def main(args:Array[String]){
Param.print("hehe")("lala")//输出lala:hehe
import Context_Implicits._
Param.print("hehe")//输出java:hehe
}
}
王家林亲授《DT大数据梦工厂》大数据实战视频“Scala深入浅出实战经典”视频、音频和PPT下载!第61讲:Scala中隐式参数与隐式转换的联合使用实战详解及其在Spark中的应用源码解析
百度云:http://pan.baidu.com/s/1i3u6b0T
腾讯微云:http://url.cn/fMV74d
360云盘:http://yunpan.cn/ccMfpvL3dZNxt 访问密码 f992
本节王老师讲了一个隐式参数可以是一个方法,这个方法可以被当前方法调用,但是只是在内部。
def bigger(a:T,b:T)(implicit ordered:T =>Ordered[T])=if(ordered(a)>b)a else b//这里Ordered是一个类,有>,<等方法
print(bigger(4,3)) print(bigger("hehe","xixi")

转载于:https://www.cnblogs.com/trgaaaaa/p/4661420.html

你可能感兴趣的文章
Hibernate二级缓存配置
查看>>
LoadRunner常用术语
查看>>
关于jedis2.4以上版本的连接池配置,及工具类
查看>>
记忆讲师石伟华微信公众号2017所有文章汇总(待更新)
查看>>
mechanize (1)
查看>>
FactoryBean
查看>>
Coolite动态加载CheckboxGroup,无法在后台中获取
查看>>
如何在我们项目中利用开源的图表(js chart)
查看>>
nfs服务器工作原理
查看>>
C3P0连接池工具类使用
查看>>
SVN常用命令备注
查看>>
孩子教育
查看>>
解决Cacti监控图像断断续续问题
查看>>
结构体的传参理解成员的存储方式
查看>>
python 进程与线程(理论部分)
查看>>
什么是API
查看>>
[shiro学习笔记]第二节 shiro与web融合实现一个简单的授权认证
查看>>
强名称程序集(strong name assembly)——为程序集赋予强名称
查看>>
1028. List Sorting (25)
查看>>
BZOJ 1613: [Usaco2007 Jan]Running贝茜的晨练计划
查看>>