Scala重复数组

时间:2011-06-20 13:36:31

标签: arrays scala

我是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的错误...)

2 个答案:

答案 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)

BTW,一种重复数组的另一种方法,就是用数组的引用“填充”Seq,然后将其展平:

def repeat[V: Manifest](original: Array[V], times: Int) : Array[V] = 
  Seq.fill(times)(original).flatten.toArray;