在Scala中,什么是';vala:a=';(下划线)什么意思?

在Scala中,什么是';vala:a=';(下划线)什么意思?,scala,initialization,Scala,Initialization,val a:a=将值初始化为什么?这是一个空类型吗?谢谢。它将a初始化为a类型的默认值。例如,Int的默认值为0,引用类型的默认值为null。val a:a=\ucode>是一个编译错误。例如: scala> val a: String = _ <console>:1: error: unbound placeholder parameter val a: String = _ ^ scala>val a:Strin

val a:a=
将值初始化为什么?这是一个空类型吗?谢谢。

它将
a
初始化为
a
类型的默认值。例如,Int的默认值为0,引用类型的默认值为null。

val a:a=\ucode>是一个编译错误。例如:

scala> val a: String = _
<console>:1: error: unbound placeholder parameter
       val a: String = _
                       ^
scala>val a:String=_
:1:错误:未绑定占位符参数
val a:字符串=_
^
起作用的是
var a:a=
(注意
var
而不是
val
)。正如Chuck在回答中所说的,这会将变量初始化为默认值。根据Scala语言规范:

0如果T是Int或其子范围类型之一,
如果T很长,则为0L,
如果T是浮动的,则为0.0f,
0.0d如果T为双精度,
如果T是布尔值,则为false,
()如果T是单位,
对于所有其他类型T为null


混合在
NotNull
trait中的类的默认值是什么?:-)@Jean Philippellet:从Scala 2.9.0.1(这是我使用的最新版本)开始,混合了NotNull特性的类的默认值是-戏剧性暂停-null。我预计这可能会在某个时候发生变化,但目前看来,
\uu
胜过
NotNull
。哈,val/var开关的捕捉效果不错。我的大脑刚刚掠过它。有没有洞察到为什么这不能与
val
一起工作?@ErikAllik:这纯粹是猜测,但
val a:Int=\ucode>可能是一个编译错误,因为如果它能工作,那将是一个糟糕的做法。这只是一种模糊的书写方式
vala:Int=0
。将
var
设置为默认值是有意义的,因为
var
预期会更改,但
val
是固定的,因此最佳做法是显式指定值。@Shuklaswag:只有知道它是整数时才可以。我正试图用它初始化一个val,它的类型我还不知道。Scala的。