Unterer Typ gebunden an Scala-Feld in mutierbarer, kovarianter Klasse?

8

Ich möchte eine kovariante Klasse erstellen, die änderbar ist, also muss ich einen niedrigeren Typ hinzufügen, der an die Setter-Methode gebunden ist. Aber ich möchte auch die Setter-Methode, um ein Feld zu setzen, also denke ich, das Feld muss den gleichen Typ gebunden haben?

%Vor%

Die Methode kompiliert fein. Aber das Feld secondValue kompiliert überhaupt nicht mit der Fehlermeldung:

%Vor%

Was muss ich tun?

    
John Smith 08.08.2012, 06:34
quelle

2 Antworten

8

Sie benötigen das Konstrukt forSome , das G als existentiellen Typ einführt:

%Vor%

In Ihrem ursprünglichen Code für secondValue wurde G aus dem Nichts entfernt, d. h. es wurde nicht richtig eingeführt. Im Fall von setSecondValue bindet der Benutzer (oder der Compiler) G an der Aufrufseite, aber für ein Feld, das keine Option ist (insbesondere, da Ihre Datei privat ist). Lesen Sie mehr über forSome und existenzielle Typen in Scala hier , hier oder Malte Schwerhoff 08.08.2012, 06:42

quelle
11

@mhs Antwort ist richtig.

Sie können auch eine Platzhalter-Syntax (wie in Java) verwenden, die genau die gleiche Bedeutung hat:

%Vor%     
incrop 08.08.2012 07:02
quelle

Tags und Links