val a: A = _
究竟将值初始化为什么?这是键入的 null 吗?谢谢。
val a: A = _
是编译错误。例如:
scala> val a: String = _
<console>:1: error: unbound placeholder parameter
val a: String = _
^
起作用的是 var a: A = _
(注意 var
而不是 val
)。正如 Chuck 在他的回答中所说,这会将变量初始化为默认值。来自 Scala 语言规范:
如果 T 是 Int 或其子范围类型之一,则为 0,如果 T 是 Long,则为 0L,如果 T 是 Float,则为 0.0f,如果 T 是 Double,则为 0.0d,如果 T 是 Boolean,则为 false,如果 T 是 Unit,则为 (),对于所有其他类型为 null T。
它将 a
初始化为 A
类型的默认值。例如,Int 的默认值为 0,引用类型的默认值为 null。
NotNull
特征的类的默认值是多少? :-)
_
胜过 NotNull
。
val
一起使用的见解?val a: Int = _
可能是编译错误,因为如果它有效,那将是不好的做法。这只是写val a: Int = 0
的一种混淆方式。将var
设置为默认值是有意义的,因为var
预计会更改,但val
是固定的,因此最佳做法是显式分配值。