我想,如下图所示,比较扑克手。 我一直在玩弄不同类型的运营商,但会感兴趣的一些指导。 我的目标是有一个声明了一个抽象父类Ordered
(这样它不需要在每个子类中声明),但参数会使得每个子类只能与同一类的实例进行比较。
例如,下面,一个HighCard
只能与另一个相比HighCard
, TwoPair
与另一TwoPair
等
sealed abstract class HandValue(rank: Int) extends Ordered[?]
case class HighCard(high: Int) extends HandValue(0){
def compare(that: HighCard) = ...
}
case class TwoPair(high: Int, big: Int, sm: Int) extends HandValue(2) {
def compare(that: TwoPair) = ...
}