在Scala中定义自定义Ordered类型时出现错误

时间:2016-06-09 23:54:52

标签: scala types

implicit class OrderableFoo[T<:Foo[A,_] forSome {type A <: Ordered[A]}](thisFoo:Foo)
extends Ordered[Foo]{
override def compare(other:Foo):Int = thisFoo.value.compare(other.value)
}

我的问题:

thisFoo.value返回类型A

的值

订购A类

thisFoo.value.compare期待一个类型为A

的参数

other.value属于A

thisFoo.value.compare(other.value)将无法编译。 “预期A但收到订单[A]”

1 个答案:

答案 0 :(得分:0)

事实证明,当使用forSome {type}特征时,thisFoo的A与其他的A不同。我们所知道的是两个A都是可订购的。这可以通过提供其他类型参数来修复。