【发布时间】:2011-12-01 04:45:00
【问题描述】:
val a: A = _ 究竟将值初始化为什么?这是键入的 null 吗?谢谢。
【问题讨论】:
-
Scala 的 symbol soup.
标签: scala initialization
val a: A = _ 究竟将值初始化为什么?这是键入的 null 吗?谢谢。
【问题讨论】:
标签: scala initialization
val a: A = _ 是编译错误。例如:
scala> val a: String = _
<console>:1: error: unbound placeholder parameter
val a: String = _
^
起作用的是var a: A = _(注意var 而不是val)。正如 Chuck 在他的回答中所说,这会将变量初始化为默认值。来自 Scala 语言规范:
0 如果 T 是 Int 或其子范围类型之一,
如果 T 很长,则为 0L,
0.0f 如果 T 是浮点数,
如果 T 为 Double,则为 0.0d,
如果 T 是布尔值,则为 false,
() 如果 T 是单位,
所有其他类型 T 为 null。
【讨论】:
val一起工作的见解?
val a: Int = _ 可能是一个编译错误,因为如果它有效,那将是不好的做法。这只是写val a: Int = 0 的一种混淆方式。将var 设置为默认值是有意义的,因为var 预计会发生变化,但val 是固定的,因此最佳做法是显式分配值。
它将a 初始化为A 类型的默认值。例如,Int 的默认值为 0,引用类型的默认值为 null。
【讨论】:
NotNull trait 中混合的类的默认值是多少? :-)
_ 胜过NotNull。