第48讲:Scala类型约束代码实战及其在Spark中的应用源码解析学习笔记

48讲:Scala类型约束代码实战及其在Spark中的应用源码解析学习笔记

1.scala的类型约束代码实战

2.scala的类型约束源代码解析

3.spark中对类型约束的使用

 

//A =:= B    //表示A类型赞同于B类型

//A <:< B    //表示A类型是B类型的子类型

def rocky[T](i:T)(implicit ev: T <:< java.io.Serializable) {

//两个参数,第一个是i,每二个参数是隐式传入的。要求T必须是java.io.Serializable类型的。

  println("Life is short, you need spark!") 

}

rocky("Spark")

//rocky(100)   传入整数时报错,无法确定整数是java.io.Serializable类型的。

//字符串是java.io.Serializable的子类。

 

An instance of 'A <:< B' witnesses that 'A' is a subtype of 'B'.

Requiring an implicit argument of the type  'A <:< B' encodes

the generalized constraint  'A <: B'

 

隐式参数是被谁传入的呢?默认导入的。

 

@implicitNotFound(msg = "Connot prove that ${From} <:< ${To}.")

sealed abstract class <:<[-From, +To] extends (From => To) with Serializable

private[this] final val singleton_<:< = new <:<[Any,Any] {def apply(x: Any): Any = x}

implicit def confroms[A]: A <:< A = singleton_<:<.asInstanceOf[A <: A]

 

 

以上内容是从王家林老师DT大数据课程第48讲的学习笔记。
DT大数据微信公众账号:DT_Spark  

王家林老师QQ:1740415547 

王家林老师微信号:18610086859
我的百度网盘共享的DT大数据梦工厂王家林老师第1-91讲的视频内容:
http://pan.baidu.com/share/home?uk=4013289088#category/type=0&qq-pf-to=pcqq.group

51CTO视频网址:http://edu.51cto.com/lesson/id-67763.html


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值