单个按名称调用构造函数arg不是必需的吗?

Bri*_*ris 13 scala

为什么下面的第2行编译?它(似乎)没有给出所需的构造函数arg.

class F(x: => Unit) {}
new F                     // Compiles (strange)
def f(x: =>Unit) = ()
f                         // Does not compile (good)
Run Code Online (Sandbox Code Playgroud)

这种特殊情况是否允许糖?你能指出关于这个问题的文档吗?我正在使用Scala 2.9.0.

Vas*_*iuk 5

Scala参考:

5.1.1构造函数调用

如果没有给出显式参数,则隐式提供空列表().

,()代表Unit

  • 从你引用的内容来看,这对我来说并不明显.`()`可以是`Unit`,但它也是一个空参数列表.鉴于措辞`空列表()`,我会假设它_not_传递类型`Unit`,`()`的唯一实例化,而是传递一个空参数列表. (4认同)