Scala:Array [Double]中的初始值是否可以安全使用?

Gre*_*idt 5 scala

当需要包含全零的数组[双精度]时,使用是否安全

    val allZeros = new Array[Double](10)
    val whatever = allZeros( 5 )     // guaranteed to be 0.0, not null?
    assert( whatever == 0.0 )        // succeeds
Run Code Online (Sandbox Code Playgroud)

或者我应该坚持

    val allZeros = Array.fill[Double](10)( 0.0 )
Run Code Online (Sandbox Code Playgroud)

我知道第一个版本有效,但这是语言的保证,即它是否总是安全的?Double理论上也可以初始化null(尽管如此,考虑到它,作为一名语言设计师,我宁愿不做出那种改变:-).

par*_*tic 5

Scala中的Double不是类似的对象java.lang.Double,而是原始类型double.因此默认值为0.您可以使用您的第一个版本,这是非常安全的.

但是,我倾向于选择第二个版本,因为它引入了另一个安全级别:它是自我记录的.