47.Scala多重界定代码实战及其在Spark中的应用源码解析
2017-09-24 18:24
239 查看
一个类型变量可同时拥有上界和下界,但是一个类型变量不可同时拥有多个上界或者下界
T <: A with B //T是A或者B的子类
T >: A with B //A或者B就是T的子类
T>: A <: B //T同时有上界、下界。 A是T的下界,B是T的上界。A是B的子类型,A和B是类型相关的。 下界必须写在前面,上界必须写在后面。
T : A : B //上下文界定,需要同时满足。T必须同时满足存在A[T]这种类型的隐式值和B[T]这种类型的隐式值
T <% A <% B //T可以有多个视图界定,T可隐式转换成A或者B,要同时满足。T既可隐式转换成A,也可隐式转换成B
class M_A[T]
class M_B[T]
object Multiple_Bounds_47 {
def main(args: Array[String]): Unit = {
//a和b 隐式表达式会被Scala编译器隐式地使用
implicit val a = new M_A[Int]
implicit val b = new M_B[Int]
def foo[T : M_A : M_B](i : T) = println("ok") //T必须同时既是M_A[T]类型的,又是M_B[T]类型的
foo(2)
}
}
输出:
ok
T <: A with B //T是A或者B的子类
T >: A with B //A或者B就是T的子类
T>: A <: B //T同时有上界、下界。 A是T的下界,B是T的上界。A是B的子类型,A和B是类型相关的。 下界必须写在前面,上界必须写在后面。
T : A : B //上下文界定,需要同时满足。T必须同时满足存在A[T]这种类型的隐式值和B[T]这种类型的隐式值
T <% A <% B //T可以有多个视图界定,T可隐式转换成A或者B,要同时满足。T既可隐式转换成A,也可隐式转换成B
class M_A[T]
class M_B[T]
object Multiple_Bounds_47 {
def main(args: Array[String]): Unit = {
//a和b 隐式表达式会被Scala编译器隐式地使用
implicit val a = new M_A[Int]
implicit val b = new M_B[Int]
def foo[T : M_A : M_B](i : T) = println("ok") //T必须同时既是M_A[T]类型的,又是M_B[T]类型的
foo(2)
}
}
输出:
ok
相关文章推荐
- Scala多重界定代码实战及其在Spark中的应用源码解析之Scala学习笔记-38
- 王家林亲授《DT大数据梦工厂》大数据实战视频“Scala深入浅出实战经典”视频、音频和PPT下载!第47讲:Scala多重界定代码实战及其在Spark中的应用源码解析
- 第47讲:Scala多重界定代码实战及其在Spark中的应用源码解析学习笔记
- Scala深入浅出进阶经典 第47讲: Scala多重界定代码实战及其在Spark中的应用源码解析
- 第47讲:Scala多重界定代码实战及其在Spark中的应用源码解析
- 44.Scala中View Bounds代码实战及其在Spark中的应用源码解析
- ClassTag 、Manifest、ClassManifest、TypeTag代码实战及其在Spark中的应用源码解析之Scala学习笔记-37
- 48.Scala类型约束代码实战及其在Spark中的应用源码解析
- 49.Scala中Variance代码实战及其在Spark中的应用源码解析
- Scala深入浅出进阶经典 第43讲:Scala中类型变量Bounds代码实战及其在Spark中的应用源码解析
- scala-43:Scala中类型变量Bounds代码实战及其在Spark中的应用源码解析
- 第43讲:Scala中类型变量Bounds代码实战及其在Spark中的应用源码解析
- 第44讲:Scala中View Bounds代码实战及其在Spark中的应用源码解析
- 62.Scala中上下文界定内幕中的隐式参数与隐式参数的实战详解及其在Spark中的应用源码解析
- 第46讲:ClassTag 、Manifest、ClassManifest、TypeTag代码实战及其在Spark中的应用源码解析学习笔记
- 第44讲:Scala中View Bounds代码实战及其在Spark中的应用源码解析学习笔记
- 第45讲:Scala中Context Bounds代码实战及其在Spark中的应用源码解析
- scala-45:Scala中Context Bounds代码实战及其在Spark中的应用源码解析
- Scala中上下文界定内幕中的隐式参数与隐式参数的实战详解及其在Spark中的应用源码解析之Scala学习笔记-52
- 第45讲:Scala中Context Bounds代码实战及其在Spark中的应用源码解析