我是scala
的新手。我尝试编写一个“重复”Array
(Scala 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
的错误...)
答案 0 :(得分:6)
您需要让编译器为V
提供类清单:
def repeat[V : Manifest](original: Array[V], times: Int): Array[V] = ...
问题的答案:为什么需要,你可以在这里找到:
Why is ClassManifest needed with Array but not List?
我不确定您要在哪里使用它,但我通常建议您使用List
或其他合适的集合代替Array
。
答案 1 :(得分:5)
Seq
,然后将其展平:
def repeat[V: Manifest](original: Array[V], times: Int) : Array[V] =
Seq.fill(times)(original).flatten.toArray;