var和val的下划线初始化之间的区别

时间:2014-03-12 21:52:46

标签: scala

为什么val x: Int = _无法编译但var x: Int = _无法编译?

我得到了error: unbound placeholder parameter

2 个答案:

答案 0 :(得分:13)

在这种情况下,_意味着"我将在稍后对其进行初始化,只需在此期间填写合理的默认值"。由于您无法重新分配val,因此这没有用。

对于相同的功能 - 获得合理的默认值 - 对于val,您可以使用

val x: Int = null.asInstanceOf[Int]

答案 1 :(得分:2)

您无法重新分配vals值,因此您无法使用_(init为规定类型的默认值)。但是你可以重新分配一个vars值,所以用一些默认值初始化它是合乎逻辑的,就像在Java中一样