Warum kompiliert das nicht?
%Vor%Ergebnis:
%Vor%Die Dinge beginnen zu kompilieren, wenn entweder:
flatMap
Aufruf sind explizit SA
ist kovariant (wtf?) Nothing
wird in p2
(z. B. Null
) SB
tritt nicht im Rückgabetyp von flatMap
auf oder tritt in kovarianter Position dieses Rückgabetyps auf (z. B. Rückgabetyp Option[SB]
) Die oben genannten Problemumgehungen sind jedoch für mich nicht akzeptabel.
@ retronyms Kommentar zu SI-9453 erläutert das Verhalten, das Sie sehen. Hier ist eine Art Workaround ...
Wir können einen Typ synthetisieren, der äquivalent zu Nothing
ist, was nicht dazu führt, dass der Tipper die Inferenzlösung zurückzieht,
ie. Nothing
mit einer Dummy-Verfeinerung. Jetzt mit dem Beispiel der Frage,
Um Ihr Problem besser zu verstehen, kann es wie folgt vereinfacht werden:
%Vor%was zu folgendem Kompilierungsfehler führt:
%Vor%Eine mögliche Lösung besteht darin, das Snippet wie folgt zu aktualisieren:
%Vor%Zurück zu Ihrem ursprünglichen Code:
%Vor%Tags und Links scala type-inference