当需要包含全零的数组[双]时,使用
是否安全 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
进行初始化(尽管如此,考虑到它,作为一名语言设计师,我宁愿不做出那种改变: - )。
答案 0 :(得分:5)
Scala中的Double不是java.lang.Double
之类的对象,而是基本类型double
。因此默认值为0.您可以使用第一个版本,这是非常安全的。
但是,我倾向于选择第二个版本,因为它引入了另一个安全级别:它是自我记录的。
答案 1 :(得分:3)
是的,这很安全。这实际上是Java的保证,它继续Scala。