ich mit Tony Morris' excellent exercise on catamorphisms nur Werkeln im Begriff war, als ich grübelte, was in der folgenden Situation geschah ...Scala Typinferenz Frage
def cata[X](some: A => X, none: => X): X
Lassen Sie mich diese Methode nun wie folgt aufrufen:
def isDefined: Boolean = cata(_ => true, false)
Ich frage mich, ob der Typ Inferenz den Typ _ => true
zu A => Boolean
oder Any => Boolean
bestimmt. Aufgrund der Tatsache, dass Function1
kontravarianten in seinem Eingabeparameter ist, fein beiden folgenden kompilieren nur:
def isDefined: Boolean = cata((_: A) => true, false) //#1
def isDefined: Boolean = cata((_: Any) => true, false) //#2
Die Frage ist also, wird der Typen mit # 1 oder # 2 Rückschließer kommen?
Welche Version von 'scalac' verwenden Sie? –
Ich benutze 2.8.0 RC2 –