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

时间:2011-07-07 04:29:57

标签: scala

当需要包含全零的数组[双]时,使用

是否安全
    val allZeros = new Array[Double](10)
    val whatever = allZeros( 5 )     // guaranteed to be 0.0, not null?
    assert( whatever == 0.0 )        // succeeds

或者我应该坚持

    val allZeros = Array.fill[Double](10)( 0.0 )

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

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:3)

是的,这很安全。这实际上是Java的保证,它继续Scala。