Wie wollen Sie erklären abstraktes Objekt Werte und Methoden in scala?

Ich angeben möchten, die Tiere auf Farbe einmal, und es ist das gleiche für alle Tiere der gleichen Spezies.

Also möchte ich tun:

abstract object Animal {val color: String}

Und geben Sie dann die einzelnen Tiere Farben mit

object Dog extends Animal {val color = "green"}

Diese muss in das Objekt, da habe ich schon eine Konvention, die nicht geändert werden können, der nur Tiere mit der factory-Methode deklariert, die in der Tier-Objekt und die factory-Methoden zugreifen muss, die Farbe.
z.B.

abstract object Animal {
   val color: String
   def makeAnimal(args): Animal = ...
}

Wie Tue ich das in scala, da "nur Klassen deklariert haben, aber undefiniert Mitglieder"?

Ich kann mir einen hacky Weg, dies zu tun mit Eigenschaften, aber ich hoffe es ist etwas besser.

[BEARBEITEN]
Also, es stellt sich heraus, dass ich nicht verwenden können, die Züge halten, die Werte/Methoden für komplizierte Gründe.
Die aktuelle Lösung beinhaltet staticly Registrierung das untergeordnete Objekt mit dem übergeordneten Objekt mit einer Eigenschaft, und das ermöglicht mir den Zugriff auf die nicht-trait-Werte und Methoden, die definiert sein muss in ein Objekt. Ich bin immer noch der Hoffnung für eine bessere Lösung.

InformationsquelleAutor wn- | 2011-07-29
Schreibe einen Kommentar