我是新手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)...
您需要让编译器提供类清单V:
def repeat[V : Manifest](original: Array[V], times: Int): Array[V] = ...
Run Code Online (Sandbox Code Playgroud)
问题的答案:为什么需要,你可以在这里找到:
为什么ClassManifest需要Array而不是List?
我不确定你想在哪里使用它,但我通常建议你使用List或代替其他合适的集合Array.
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)