当需要包含全零的数组[双精度]时,使用是否安全
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(尽管如此,考虑到它,作为一名语言设计师,我宁愿不做出那种改变:-).
Scala中的Double不是类似的对象java.lang.Double,而是原始类型double.因此默认值为0.您可以使用您的第一个版本,这是非常安全的.
但是,我倾向于选择第二个版本,因为它引入了另一个安全级别:它是自我记录的.