1. 联合类型定义
A union B表示是A类型或B类型
2. 使用情形
无非有两种情形,要么是A类型,要么是B类型。
通过集合表示,A union B所覆盖的情形为集合A的情形和集合B的情形,至少可以完全覆盖A with B的全部情形
3. 构造
结合里氏替换原则,所有A union B的情形都可以用A with B类型进行替换,我们可以从A with B扩展,结合<:<构造A union B类型
4. 示例
def f[A](a: A)(implicit ev: (Int with String) <:< A) = println('ok')
f(1) // ok
f("1") // ok