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
^
这里有什么问题?我该如何解决这个问题?
最佳答案
您需要做的是指定可返回类型,这将起作用(对于 scala < 2.8):
def a[A](b:Seq[A]):Array[A] = b.toArray
由于新的集合框架必须进行特殊类型的转换才能处理像集合这样的数组,请参阅 Fighting bit rot第448页,要讲高阶类型,就是
ClassManifest
的意思它讲述了类(class)(有一个更宽的 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
关于scala - 调用 toArray 时编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8728786/