加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 调用toArray时编译器错误

发布时间:2020-12-16 10:08:09 所属栏目:安全 来源:网络整理
导读:scala def a[A](b:Seq[A]) = b.toArrayconsole:7: error: could not find implicit value for evidence parameter of type ClassManifest[A] def a[A](b:Seq[A]) = b.toArray ^ 这里有什么问题?我该如何解决这个问题? 解决方法 你要做的是指定可返回类型,
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

由于新的Collections框架必须进行特殊的转换才能处理像Collections这样的数组,请参阅Fighting bit rot第448页,我们必须告诉高阶类型,它是ClassManifest的含义,它讲述了类(那里)是一个更广泛的清单).

所以下面的两个例子都是有效的(更多信息请参见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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读