下面,所述第一殼體成功並且第二失敗。爲什麼我需要明確的證據類型/爲什麼這個Scala類型綁定失敗?在解決A
問題時,類型推理器的特殊限制是什麼?爲什麼我需要明確的證據類型/爲什麼這個Scala類型綁定失敗?
scala> implicit def view[A, C](xs: C)(implicit ev: C <:< Iterable[A]) = new { def bar = 0 }
view: [A, C](xs: C)(implicit ev: <:<[C,scala.collection.immutable.Iterable[A]])java.lang.Object{def bar: Int}
scala> view(List(1)) bar
res37: Int = 0
scala> implicit def view[A, C <: Seq[A]](xs: C) = new { def bar = 0 }
view: [A, C <: scala.collection.immutable.Seq[A]](xs: C)java.lang.Object{def bar: Int}
scala> view(List(1)) bar
<console>:149: error: inferred type arguments [Nothing,List[Int]] do not conform to method view's type parameter bounds [A,C <: scala.collection.immutable.Seq[A]]
view(List(1)) bar
^
謝謝,但我其實知道'C [A] <:序號[A]'工作 - 它只是限制了我一元型構造。我*想*一個'C <:Seq [A]'。無論如何,你說的推理不符合類型參數引用對方處理好回答我的問題,所以我將其標記爲接受,但會愛更多詳情! – Yang