在“Scala in Depth”中有一个例子,作者解释了 scala 如何对传递给方法的参数进行某种程度的推断。例如,如下所示:
def myMethod(functionLiteral: A => B):Unit
myMethod({ arg:A => new B})
myMethod({ arg => new B})
为了弄清楚作者在说什么,我在 REPL 中做了以下操作:
def myMethod(functionLiteral: Boolean => Boolean):Unit = {}
myMethod({a:Boolean => true})
myMethod({a => true})
这里发生的唯一具有启发性的事情是编译器不会抛出错误。
作者是否想说编译器将函数参数 a 推断为布尔值?