Scala this.type符合超类型的类型参数边界

时间:2011-07-30 21:52:40

标签: scala

我正在尝试编译以下代码:

class MyClass {
  def foo(): this.type = Helper.bar(this)
}

class ChildClass extends MyClass

object Helper {
  def bar[A <: MyClass](cls: A): A = cls
}

产生的编译器错误是:

 type arguments [MyClass.this.type] do not conform to method bar's type parameter bounds [A <: MyClass]

有什么办法可以用上面提供的方法签名来创建这个编译属性吗?似乎MyClass.this.type应该是一个validClass,并且我不想在调用Helper时抛出两次(一次在路上,一次在路上)。

1 个答案:

答案 0 :(得分:4)

从不推断单身人士类型。你必须写

Helper.bar[this.type](this)