【发布时间】:2020-09-04 04:51:26
【问题描述】:
我正在对两个对象的元组进行模式匹配,并希望匹配所有 object1 与 object2 类型相同的情况,类似于
(object1, object2) match {
case (o1: T, o2: T) =>
// Ignore same objects case
case
.
.
.
case (_, _)
// Here I can be certain that the two object are not of the same type
【问题讨论】:
-
case (o1, o2) if (o1 == 02) =>另外,请不要进行类型检查case foo: T由于擦除通常是不安全的,并且通常是代码异味。 -
@LuisMiguelMejíaSuárez 谢谢!我怎么没想到?你说我不应该使用 case a: String 或 b: Int 之类的东西?你能解释一下为什么吗?
-
@LuisMiguelMejíaSuárez 你检查元组元素是否相等或类型相同?
-
@DmytroMitin 实际上我正在匹配 case 对象,所以这很好用,但如果有一个解决方案也可以检查相等类型,我不介意知道它 :)
-
@DmytroMitin Liskov 是子类型化的原则。用子类型打破任何语言的 Liskov 是 "sin" :p