如何初始化類型A的數組與其他數組長度相同? (在這種情況下,A是String或智力)在斯卡拉初始化任何類型的數組
def init_arr_with_same_len[A](arr1: Array[A]): Array[A] = {
val len = arr1.length
val arr2 = new Array[A](len)
arr2
}
如何初始化類型A的數組與其他數組長度相同? (在這種情況下,A是String或智力)在斯卡拉初始化任何類型的數組
def init_arr_with_same_len[A](arr1: Array[A]): Array[A] = {
val len = arr1.length
val arr2 = new Array[A](len)
arr2
}
與其他集合類型相比,數組有點特別。看到這個可愛的文章更多細節(http://docs.scala-lang.org/overviews/collections/arrays.html)。
它的缺點是爲了讓scala中的數組支持泛型(java數組不支持泛型),您需要爲泛型提供一個scala.reflect.ClassTag。
Welcome to Scala version 2.11.7 (OpenJDK 64-Bit Server VM, Java 1.8.0_65).
Type in expressions to have them evaluated.
Type :help for more information.
scala> import scala.reflect.ClassTag
import scala.reflect.ClassTag
scala> def arrayOfSameTypeAndSize[A](a: Array[A])(implicit ct: ClassTag[A]): Array[A] = new Array(a.size)
arrayOfSameTypeAndSize: [A](a: Array[A])(implicit ct: scala.reflect.ClassTag[A])Array[A]
scala> val x: Array[Int] = arrayOfSameTypeAndSize(Array(1,2,3))
x: Array[Int] = Array(0, 0, 0)
scala>
或稍微簡潔些。
scala> def arrayOfSameTypeAndSize[A: ClassTag](a: Array[A]): Array[A] = new Array(a.size)
arrayOfSameTypeAndSize: [A](a: Array[A])(implicit evidence$1: scala.reflect.ClassTag[A])Array[A]
scala> val x: Array[Int] = arrayOfSameTypeAndSize(Array(1,2,3))
x: Array[Int] = Array(0, 0, 0)
scala>
您正在尋找Array#clone。