Scala abstrakten Fall Klasse
Gegeben Card
ich möchte in der Lage sein, um die nächsten und vorherigen Cards
wenn Sie vorhanden sind.
Die Idee mit der next()
und prev()
Funktionen ist, dass Sie gibt den nächsten oder vorherigen Suits
bzw. Die Reihenfolge der Farben: Hearts
, Spades
, Diamonds
, Clubs
.
Weitere Klärung, ich sollte diese
//case class Card(n : Int, s : Suit)
//1. define abstract case class Suit
//2. define abstract case classes RedSuit and BlackSuit
//3. define concrete case classes Hearts, Spades, Diamonds, Clubs
//5. define abstract methods next():Suit and prev():Suit on Suit class
//6. implement the next():Suite and prev():Suit on each of the Hearts, Diamonds,Spades and Clubs classes
//7. implement the next():Card and prev():Card on the Card class
Aber in der ersten Ort, den ich nicht umsetzen können die next()
auf Herz Klasse
case class Card(n: Int, s: Suit)
abstract case class Suit{
type cardsuit <: Suit
def next(): cardsuit
def prev(): cardsuit
}
abstract case class RedSuit extends Suit {
type red <: RedSuit
}
abstract case class BlackSuit extends Suit {
type black <: BlackSuit
}
case class Hearts extends RedSuit {
type red = Hearts
def next(): Spade = ??? //I wanna have Spades hier
def prev(): Club = ??? //I wanna have Clubs hier
}
- Sie sollten nie Abstrakt Fall-Klassen.
- Können Sie erklären, warum case-Klassen-Vererbung ist so schlecht?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht genau wissen was Sie zu tun versuchen, ist... In jedem Fall, Fall-Klassen sollte nicht als Unterklasse definiert, die von anderen case-Klassen (der compiler sollte auch warnen Sie über diese).
Hinsichtlich der Modellierung Ihrer Anzüge, wie wäre es mit etwas wie das?
Möchten Sie vielleicht
prev
undnext
zurückOption[PrevSuit]
undOption[NextSuit]
bzw. anstatt werfen Ausnahmen, oder stellen Sie die Anzüge wrap-around-zwischen Herz und Clubs.:paste
vor dem einfügen in die REPL, da gibt es kreisförmige Abhängigkeiten zwischen den Klassen.