数组是常规的JVM数组,但有一些变化,它们被视为不变的,并具有特殊的构造函数和隐式转换。不使用new关键字构造它们。
val a = Array("element")
现在a具有类型Array[String]。
val acs: Array[CharSequence] = a //错误:类型不匹配;找到:数组[String]必需:数组[CharSequence]
虽然String可以转换为CharSequence,但Array[String]不能转换为Array[CharSequence]。
Array由于隐式转换为,因此您可以使用其他类似的集合TraversableLike ArrayOps:
val b: Array[Int] = a.map(_.length)
大多数Scala集合(TraversableOnce)都有一个toArray采用隐式ClassTag构造结果数组的方法:
List(0).toArray //> res1: Array[Int] = Array(0)
这样可以轻松地TraversableOnce在Scala代码中使用任何代码,然后将其传递给需要数组的Java代码。