为什么'var imp:= _'不能编译?

时间:2013-08-15 21:26:49

标签: scala

为什么初始化需要对象类型:

为什么要编译:

var imp : String = _

但这不是:

var imp = _

错误:unbound placeholder parameter

是因为在初始化时不知道对象类型吗?

2 个答案:

答案 0 :(得分:5)

当您编写var imp : String = _时,Scala知道imp是一个字符串,即使它没有值(它将其初始化为null)。

当您编写var imp = _时,Scala不知道该类型是什么。如果您明确指定它或者给出可以推断它的初始值,它只能知道预期的类型。

答案 1 :(得分:3)

是 - 这是因为在声明/初始化时间内不知道对象类型。