我正在尝试比较扑克手,如下所示。我一直在玩不同类型的运算符,但会对一些指导感兴趣。我的目标是拥有一个声明的抽象父类Ordered
(这样就不需要在每个子类上声明它),但是参数化将使得每个子类只能与同一类的实例进行比较。
例如,在下面, aHighCard
只能与 another HighCard
、TwoPair
与 anotherTwoPair
等进行比较。
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) = ...
}