Я был просто возится с о Tony Morris' excellent exercise on catamorphisms, когда я размышлял, что происходит в следующей ситуации ...Scala тип умозаключение вопрос
def cata[X](some: A => X, none: => X): X
Позвольте мне теперь называть этот метод следующим образом:
def isDefined: Boolean = cata(_ => true, false)
Мне было интересно, определяет ли тип inferencer тип _ => true
как A => Boolean
или Any => Boolean
. В связи с тем, что Function1
является противопоказан вариантом в входном параметре, оба следующих компилировать просто отлично:
def isDefined: Boolean = cata((_: A) => true, false) //#1
def isDefined: Boolean = cata((_: Any) => true, false) //#2
Таким образом, вопрос, имеет ли тип inferencer придумать # 1 или # 2?
Какую версию 'scalac' вы используете? –
Я использую 2.8.0 RC2 –