Verständnis für "anwenden" und "nicht anwenden" mit Singletontyp

8

Gegeben:

%Vor%

Warum haben Foo.apply _ und Foo.unapply _ unterschiedliche Signaturen, nämlich Int(1) bzw. Int ?

%Vor%     
Kevin Meredith 27.06.2017, 13:29
quelle

1 Antwort

6

Soweit ich das beurteilen kann, wird in scala.tools.nsc.typechecker.Namers (Compilercode), apply verwendet von completerOf und caseApplyMethodCompleter erzeugt, während unapply verwendet , um nur aus completerOf zu kommen. Dieser und wahrscheinlich andere Faktoren, wahrscheinlich einige subtile Fehler, führen dazu, dass unapply die Typinformation verliert. Diese Änderung führt zu einer neuen Umgestaltung des Codes und dazu, dass beide -Methoden die neuen% durchlaufen. co_de%, das behebt es. Da es kein Ticket zu diesem Problem zu geben scheint, wird die wahre Ursache einige zusätzliche Grabungen erfordern. Es ist wahrscheinlich davon auszugehen, dass dies kein beabsichtigtes Verhalten war.

    
HTNW 30.06.2017, 14:56
quelle

Tags und Links