我最近在玩一段严重依赖函数参数的代码,并注意到以下我无法向自己解释的行为:
// first, a few methods
def a(x: => Any) {}
def b(x:() => Any) {}
// then some helpers
def x = {}
def y() = {}
// these execute the possible combinations
a(x)
b(y)
a(y)
b(x)
前三个按预期工作,但第四个失败。REPL 输出它是
<console>:10: error: type mismatch;
found : Unit
required: () => Any
b(x)
^
对我来说x
,y
看起来一样,但显然不是。起初我认为这是某种属性访问而不是被引用的方法,但我无法推断出它a(y)
似乎工作得很好——换句话说,我看不到操作之间的对称性。
那么,我错过了什么?