在 Scala 中,'val a: A = _'(下划线)究竟是什么意思? [英] In Scala, what exactly does 'val a: A = _' (underscore) mean?
问题描述
val a: A = _
究竟将值初始化为什么?这是键入的 null 吗?谢谢.
What exactly does val a: A = _
initialize a value to? Is this a typed null? Thanks.
推荐答案
val a: A = _
是编译错误.例如:
scala> val a: String = _
<console>:1: error: unbound placeholder parameter
val a: String = _
^
起作用的是 var a: A = _
(注意 var
而不是 val
).正如 Chuck 在他的回答中所说,这会将变量初始化为默认值.来自 Scala 语言规范:
What does work is var a: A = _
(note var
instead of val
). As Chuck says in his answer, this initialises the variable to a default value. From the Scala Language Specification:
0 如果 T 是 Int 或其子范围类型之一,
如果 T 很长,则为 0L,
0.0f 如果 T 是浮点数,
如果 T 为 Double,则为 0.0d,
如果 T 是布尔值,则为 false,
() 如果 T 是单位,
所有其他类型 T 为 null.
0 if T is Int or one of its subrange types,
0L if T is Long,
0.0f if T is Float,
0.0d if T is Double,
false if T is Boolean,
() if T is Unit,
null for all other types T.
这篇关于在 Scala 中,'val a: A = _'(下划线)究竟是什么意思?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!