0

我有一个特点如下:

trait SomeBaseTrait{
  def someFun[B](args:SomeArgs)(f: => B):B
}

在我的测试类中,我试图模拟这个类,如下所示:

class MyMockOfBase extends SomeBaseTrait{
     def someFun[Boolean](args:SomeArgs)(f: => Boolean):Boolean = true
}

这里的问题是编译这个类会抛出以下内容:

[error]  found   : scala.Boolean(true)
[error]  required: Boolean
[error]   def someFun[Boolean](args:SomeArgs)(f: => Boolean):Boolean = true
[error]                                                                ^
[error] one error found

编辑。

此外,当我的 trait 有如下方法时,事情也有点奇怪:

 trait SomeBaseTrait2{
    def someFun2[B](args:SomeArgs):B
  }

我将其扩展如下:

val mockBase = new SomeBaseTrait2{def someFun2(args:SomeArgs):Boolean = true}

现在在这里我得到以下信息:

new SomeBaseTrait2{def someFun2(args:String):Boolean = true}
<console>:9: error: object creation impossible, since method someFun2 in trait SomeBaseTrait2 of type [B](args: String)B is not defined
              new SomeBaseTrait2{def someFun2(args:String):Boolean = true}

有人可以告诉我我在这里可能做错了什么吗?

4

1 回答 1

1

在您的类MyMockOfBase Boolean中是类型参数的名称,就像T

class MyMockOfBase extends SomeBaseTrait{
     def someFun[T](args:SomeArgs)(f: => T):T= true
}

您正在尝试使用trueas T

我猜你想做这样的事情:

trait SomeBaseTrait[B]{
  def someFun(args:SomeArgs)(f: => B):B
}

class MyMockOfBase extends SomeBaseTrait[Boolean]{
     def someFun(args:SomeArgs)(f: => Boolean):Boolean = true
}
于 2013-06-28T05:31:16.033 回答