我已經讀過一些關於清單和擦除 - 避免技術,讓斯卡拉做像「新陣列[數組[T]]」,但我有點難以忍受這一個....我的數組的Scala參數化假設一個字符串?
我有一種方法,像電子數據表一樣排列一堆行。例如設想一個2D陣列是這樣的:
11, 5, 4
8, 3, 7
2, 1, 4
我寫總結了該陣列的列和吐出一維數組,例如[21,9,15]
欲泛化的方法它超越了Ints(比如Doubles或Floats),當我添加一個參數和清單時,我得到一個編譯錯誤。
下面的代碼
def sumGrid[T](grid: Array[Array[T]])(implicit m: ClassManifest[T]): Array[T] = {
val sum = new Array[T](grid(0).size)
for(i <- 0 until grid.size) {
for(j <- 0 until grid(0).size) {
sum(j) = sum(j) + grid(i)(j)
}
}
sum
}
這裏的編譯錯誤:
[ERROR] ...scala/euler/GridOperations.scala:126: error: type mismatch;
[INFO] found : T
[INFO] required: String
[INFO] sum(j) = sum(j) + grid(i)(j)
[INFO] ^
[ERROR] one error found
這是怎麼回事?爲什麼字符串「需要」?
注意,在這種情況下,你可以通過編寫'高清sumGrid迴避問題[T:數字(格:數組[數組[T])= grid.transpose.map(_總和) '。 –