我只是在琢磨托尼莫里斯关于变质的出色练习,当时我正在思考在以下情况下发生了什么......
def cata[X](some: A => X, none: => X): X
现在让我按如下方式调用此方法:
def isDefined: Boolean = cata( _ => true, false)
我想知道类型推断器是否确定了的类型_ => true
是A => Boolean
或Any => Boolean
。由于其输入参数Function1
是逆变的,因此以下两个编译都很好:
def isDefined: Boolean = cata( (_: A) => true, false) //#1
def isDefined: Boolean = cata( (_: Any) => true, false) //#2
所以问题是,类型推断器提出#1 还是#2?