Frage

Was ist der Unterschied zwischen Scala ist traits Haskell Typ-Klasse und C ++ 0x Konzepte?

Wie in diesem Beispiel unter dem Beobachter ein abstrakten Mitglieder erklärt receiveUpdate Observer ist in der Tat eine „anonyme“ -Typen oder Strukturtypen.

package observer
trait Subject {
   type Observer = { def receiveUpdate(subject: Any) }
   private var observers = List[Observer]()
   def addObserver(observer:Observer) = observers ::= observer
   def notifyObservers = observers foreach (_.receiveUpdate(this))
}
War es hilfreich?

Lösung

  • Konzepte kommen nicht zu C ++ 0x, haben sie in den letzten Versionen des Entwurfs-Spezifikation entfernt worden ist.
  • Typ-Klassen, in denen ursprünglich für beschränkte Quantifizierung parametrischen Polymorphismus bestimmt (generische Einschränkungen „forall x, so daß x eine ist ...“) und ein Mechanismus ad-hoc Polymorphismus für eine völlig geschlossene Sprache zur Verfügung zu stellen Typs in einem weniger ad-hoc-Weise.
  • Konzepte sind auch für beschränkte Quantifizierung parametrischen Polymorphismus und Konzept Überlastung bereitzustellen, das für den Mangel macht Teil Spezialisierungen von Template-Funktionen in C ++. Sie wo ursprünglich mit Vorlage Fehlermeldung Problem in C entwickelt beschäftigen ++.
  • Traits sind Mechanismus zu mischen-in Verhaltensweisen ohne Mehrfachvererbung zu verwenden.

So nur zwei von ihnen haben etwas gemeinsam, aber nicht viel, die Konzepte und Typ-Klassen sind. Es hat bereits Vergleiche wurden zwischen den beiden in diesem Papier: Ein Vergleich von C ++ Konzepte und Haskell Typklassen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top