【发布时间】:2011-02-11 14:41:40
【问题描述】:
scala> val a = Array [Double] (10)
a: Array[Double] = Array(10.0)
scala> val a = new Array [Double] (10)
a: Array[Double] = Array(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
为什么这两个表达式有不同的语义?
【问题讨论】:
-
Scala 中的数组管理是一种害虫。只有在冻结的基础上开发才有可能
-
一个“冻结的基地?”真正的阵列处理从 2.7 到 2.8 发生了很大变化,但我认为我们可以期待它在此后保持稳定。现在 Scala 数组是 Java 数组。 Scala 的“额外”数组功能是通过隐式处理的。
-
隐含如何让 Array 获得更多功能?
-
您可以编写类似
Array(1,2,3).map(_ * 0.5)的东西,它的工作方式就像Array是Scala 集合的标准部分一样。但在幕后,它被隐式地放置在一个包装器类中,这个包装器就是所谓的map。所以,一方面,Array[X]确实是 Java 的X[],另一方面,你可以假装它是 Scala 集合中几乎完全集成的成员。