更高级的类型推断

时间:2017-02-13 14:34:58

标签: scala type-inference typechecking

(Scala 2.11.8)

请考虑以下代码段:

class Case2 {
  trait Container[+A] {
    def addAll[B >: A, T2 <: Container[B]](that: T2): Boolean
  }

  def t1: Container[String] = ???
  def t2: Container[Int] = ???

  // Works
  t1.addAll[Any, Container[Any]](t2)

  // Errors:
  //* type mismatch; found : Case2.this.Container[Int] required: T2
  //* inferred type arguments [String,Case2.this.Container[Int]] do not conform to method addAll's type parameter bounds [B >: String,T2 <: Case2.this.Container[B]]
  t1.addAll(t2)
}

为什么不能将addAll调用推断作为适当的最不常见的超类型?

1 个答案:

答案 0 :(得分:0)

创建了一个ticket,它被关闭为&#34;超出范围&#34; 引用Adriaan Moors

  

类型推断不支持引用其他类型参数的边界。