第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