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

Rad*_*sky 10 scala

为什么不val x: Int = _编译但是var x: Int = _呢?

我到了error: unbound placeholder parameter.

Rex*_*err 13

在这种情况下,_意味着"我将在稍后对其进行初始化,只需在此期间填写合理的默认值".既然你不能重新分配val,这没有意义.

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

val x: Int = null.asInstanceOf[Int]
Run Code Online (Sandbox Code Playgroud)

  • @AlexeyRomanov我理解,但如果它只是默认值,那么赋值给`val`应该编译,但事实并非如此.我不是在说它是否有意义.我只是想说`_`不等于给定类型的默认值. (2认同)