从数学的角度我明白什么是partial order,但是看不到在Scala库中可以使用哪些类型的类以及如何使用PartialOrdering。我搜索整个标准库,并且只有一个用法:它通过Ordering进行扩展。它的主要方法tryCompare
同样的故事,似乎没有在任何地方使用。Scala库中PartialOrdering的用途
object PartialFoo extends PartialOrdering[Foo] {
def tryCompare(a: Foo, b: Foo): Option[Foo] = {
if (a.x != b.x) None // Doesn't make sense to compare foos with different xs
else ???
}
}
UPD:
那么,什么好处,我可以,如果不是
case class Foo(x: Int, y: String)
val order = Ordering.by { foo => (foo.x, foo.y) }
我实现一个更域的正确的实例有它也好像订购特质defined与回报键入Some[Int]
(而不是Option[Int]
),我甚至不能使用覆盖。这是故意的吗?
标准库已满这样的谜团,我不确定有没有更好的答案比“有人争论在某个时候包含这个”更好。 –
此外,我记得在任何Scala代码库中使用的唯一地方是Algebird。 –