Rog*_*ach 3 scala scala-collections
scala> def a[A](b:Seq[A]) = b.toArray
<console>:7: error: could not find implicit value
for evidence parameter of type ClassManifest[A]
def a[A](b:Seq[A]) = b.toArray
^
Run Code Online (Sandbox Code Playgroud)
这里有什么问题?我该如何解决这个问题?
你要做的是指定可返回类型,这将工作(对于scala <2.8):
def a[A](b:Seq[A]):Array[A] = b.toArray
Run Code Online (Sandbox Code Playgroud)
由于新的Collections框架必须进行特殊的转换才能处理像Collections这样的数组,请参阅Fighting bit rot第448页,我们必须告诉高阶类型,它的含义ClassManifest告诉了类(有一个Manifest更广泛的).
所以下面的两个例子都是有效的(这里有更多信息Collections API Explained):
def a[A](b:Seq[A])(implicit m:ClassManifest[A]):Array[A] = b.toArray
def a[A:ClassManifest](b:Seq[A]):Array[A] = b.toArray
Run Code Online (Sandbox Code Playgroud)