0
如果我想避免isInstanceOf & asInstanceOf
组合,而是要使用模式匹配,目的是避免在下面的例子中擦除问题的任何简单方式?我研究了一些答案,但他们似乎都使用清单和生成的代码看起来复杂得多的不良isInstanceOf & asInstanceOf
组合。斯卡拉 - 对一个类型参数的模式匹配?
trait Comparable[A] extends Ordered[A] {
override def equals(that : Any) =
that match {
case that : A => compare(that) == 0
case _ => false
}
}
我在上面的代码的目标是建立一个单一的特点,对于==增加了实施和!=到有序比较。不过,我得到以下错误,因为被擦除:
warning: abstract type pattern A is unchecked since it is eliminated by erasure
case that : A => compare(that) == 0
注:有关于这个问题在计算器上其他类似的问题,但接受的答案似乎使用清单,因此,我的问题 - 可这可以实现一个更简单的方法?
你说的意思是“在任何等于被宣布采取隐式ClassTag”?它只需要一个“任何”。 –
@AlexeyRomanov我的意思是“不” – wingedsubmariner