Scala重复数组

teu*_*cer 6 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)
}
Run Code Online (Sandbox Code Playgroud)

但我无法编译这个(得到一个错误manifest)...

ten*_*shi 6

您需要让编译器提供类清单V:

def repeat[V : Manifest](original: Array[V], times: Int): Array[V] = ...
Run Code Online (Sandbox Code Playgroud)

问题的答案:为什么需要,你可以在这里找到:

为什么ClassManifest需要Array而不是List?

我不确定你想在哪里使用它,但我通常建议你使用List或代替其他合适的集合Array.


RoT*_*oRa 5

BTW,一种重复数组的另一种方法,就是Seq用数组的引用"填充"a 然后压平:

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