在 Scala 中,'val a: A = _'(下划线)到底是什么意思? [英] In Scala, what exactly does 'val a: A = _' (underscore) mean?
问题描述
val a: A = _
究竟将一个值初始化为什么?这是一个类型化的空值吗?谢谢.
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
).正如查克在他的回答中所说,这会将变量初始化为默认值.来自 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 或其子范围类型之一,
0L 如果 T 是 Long,
0.0f 如果 T 是浮动的,
0.0d 如果 T 是 Double,
如果 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屋!