在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:
如果T为Int或其子范围类型之一,则为0,
如果T长,则为0L,
如果T为Float,则为0.0f,
如果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屋!