我是scala
的新手。我試着寫一個函數是「重複」的Array
(斯卡拉2.9.0):斯卡拉重複陣列
def repeat[V](original: Array[V],times:Int):Array[V]= {
if (times==0)
Array[V]()
else
Array.concat(original,repeat(original,times-1)
}
但我不能編譯這個(獲得有關manifest
錯誤)......
我是scala
的新手。我試着寫一個函數是「重複」的Array
(斯卡拉2.9.0):斯卡拉重複陣列
def repeat[V](original: Array[V],times:Int):Array[V]= {
if (times==0)
Array[V]()
else
Array.concat(original,repeat(original,times-1)
}
但我不能編譯這個(獲得有關manifest
錯誤)......
你要問編譯器提供一流的艙單V
:
def repeat[V : Manifest](original: Array[V], times: Int): Array[V] = ...
答案的問題:爲什麼需要,您可以在這裏找到:
Why is ClassManifest needed with Array but not List?
我不確定要使用它的位置,但我通常可以推薦您使用List
或其他合適的集合,而不是Array
。
順便說一句,以另一種方式重複陣列,將「填充」一個Seq
與陣列的引用,然後弄平的是:
def repeat[V: Manifest](original: Array[V], times: Int) : Array[V] =
Seq.fill(times)(original).flatten.toArray;
我想延長需要數組作爲輸入(一類更具體的來自scalala的DenseMatrix類)。那裏(@specialized)數字類型隱式轉換爲'標量'。但你總是需要給整個陣列。我想要一個接近'R'的方法,即當陣列不具備所需的長度時,只需重複並可能將其切割以使其適合... – teucer