Methoden versus Funktion und impliziert in Scala

8

Lassen Sie uns eine def und eine äquivalente Funktion als val deklarieren:

%Vor%

Nun, warum funktioniert das nicht?

%Vor%

Während beide das tun?

%Vor%

Da Option kein Subtyp von GenTraversableOnce ist, muss das etwas mit Implicits zu tun haben, aber ich kann nicht herausfinden, was genau das ist. Ich benutze Scala 2.9.1.

    
Kim Stebel 18.03.2012, 18:48
quelle

1 Antwort

7

Die implizite Umwandlung Option.option2Iterable macht% co_de aus % und List(1).flatMap(optional) arbeiten.

Ihr Problem kann dadurch reduziert werden, dass die implizite Konvertierung nicht übernommen wird:

%Vor%

Wenn Sie den Unterstrich verwenden, versucht der Compiler, die Funktion einzugeben und die erforderliche implizite Konvertierung bereitzustellen. Wenn Sie nur optional2 angeben, gibt es keine implizite Konvertierung.

    
huynhjl 18.03.2012, 18:56
quelle

Tags und Links