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

Scala类型错误 – 没有类型参数,预期:一个

发布时间:2020-12-16 10:04:18 所属栏目:安全 来源:网络整理
导读:嗨其他 Scala开发人员, 任何人都可以向我解释下面的代码中的类型推断有什么问题,以及如何修复它. 以下代码是使用Scala 2.10.2的Play 2.2的自定义操作 class Test { trait Entity class NodeRequest[A,K :Entity](val entity: K,val request: Request[A]) ext
嗨其他 Scala开发人员,

任何人都可以向我解释下面的代码中的类型推断有什么问题,以及如何修复它.

以下代码是使用Scala 2.10.2的Play 2.2的自定义操作

class Test {

  trait Entity

  class NodeRequest[A,K <:Entity](val entity: K,val request: Request[A])
    extends WrappedRequest[A](request)

  def LocateResource[A,K](itemId: Int,v: List[K],forceOwners:Boolean = true) =
    new ActionBuilder[NodeRequest[A,K]]() {
      def invokeBlock[A](request: Request[A],block: (NodeRequest[A,K]) => Future[SimpleResult]) = {
        Future.successful(Ok)
      }
    }

[error]   Test.this.NodeRequest[A,K] takes no type parameters,expected: one
[error]   def LocateResource[A,forceOwners:Boolean = true) = new ActionBuilder[NodeRequest[A,K]]() {
[error]                                                                                                     ^

解决方法

错误消息有点令人困惑 – 它实际上是指ActionBuilder的类型参数.您需要的是类型函数(或更具体地,部分类型的应用程序).这在Scala中有点棘手. Scala 2.8语言参考实际上说你做不到,但事实并非如此.试试这个:

def LocateResource[A,forceOwners:Boolean = true) =
  new ActionBuilder[({type λ[B] = NodeRequest[B,K]})#λ]() {

(编辑:李大同)

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

    推荐文章
      热点阅读