Was ist das derzeit empfohlene Muster für Familienpolymorphismus in Scala?
Während wir mit der Modellierung von Spielen experimentierten, tauchte diese Lösung kürzlich auf:
%Vor%Ein bestimmtes Spiel (Poker in diesem Beispiel) kann in Bezug auf diese Eigenschaften wie folgt ausgedrückt werden:
%Vor%Ich habe mehrere Fragen zu diesem Setup:
Wie wird Game[G <: Game[G]]
auf Englisch ausgesprochen? Wie lauten die Namen für die Rollen, die G
und Game
in dieser Situation spielen? (Bedeutet speziell in dieser "rekursiven" Beziehung.)
Ist das eine sinnvolle Umsetzung des "Familienpolymorphismus"? Auf hohem Niveau ist mein Verständnis, dass dies bedeutet, dass das Spiel und sein SPIELER und STAAT als eine "Familie" variieren müssen. Der Familienpolymorphismus in Scala, den ich an anderer Stelle gesehen habe, unterscheidet sich erheblich, und mir sind die verschiedenen Kompromisse nicht klar:
Die Diskussion von Ansätzen zu Familienpolymorphismen, die Typklassen, Makros, f-gebundenen Polymorphismus oder irgendetwas anderes beinhalten, ist willkommen.
Ich würde die Notwendigkeit in Frage stellen, die Klassen "außerhalb" des Merkmals überhaupt zu definieren. Die Typen Player
und State
sind bereits von Game abhängig, Sie müssen also nicht versuchen, sie weiter einzuschränken.
Sie können das Kuchenmuster verwenden, um verschiedene Teile zu verschiedenen Eigenschaften / Dateien zu trennen, wenn Sie möchten.
%Vor%Tags und Links scala polymorphism