2016-04-15 15 views
0

Ist es möglich, eine Typklasse basierend auf type -Parameter zu erstellen, indem type-Parameter wie im folgenden Code vererbt werden?scala: Vererbung der Basisklasse vom Typ Parameter

Ich vermute, dass dies grundsätzlich nicht möglich, da dies eine scala Einschränkung als funktionale Sprache ist ...

Aber wenn möglich, was ich habe in dem unten stehenden Code ändern ??

class MyInt[T : Numeric] extends T { 

} 

Antwort

1

Es ist nicht möglich. Sie können eine Klasse (Traits enthalten) erweitern, aber Sie können eine Typ nicht erweitern, und T ist ein Typ.

Selbst wenn es möglich wäre, was würde es dann bedeuten, MyInt[Int] (das ist endgültig) oder MyInt[List[String]] (was ist keine Klasse) zu haben? Es würde für den Compiler sehr schnell sehr kompliziert werden.

+0

Also das ist eine Sprachbeschränkung und ich würde allgemeine Beschränkung für die funktionale Programmierung annehmen ??? – Pavel

+1

Es ist eine Sprachbeschränkung. Es hat nichts mit funktionaler Programmierung zu tun. Ich kenne keine Programmiersprache, die genau das tun kann, was Sie fragen. –

+0

@PavelOliynyk Die Schnittmenge von FP und Subtyping ist klein und seltsam - in den meisten funktionalen Sprachen wäre die Frage nicht einmal sinnvoll. :) –