3
在一個庫中,有一個具有較高主幹類型的類取一個類型參數。我想給它一個類型,需要兩個類型參數,所以我使用type
表達式來修復其他參數。使用較高主幹類型時的類型不匹配
但它並不像我所期望的那樣。
代碼減少到這一點:
object Main {
class Bar[T[_]] {
def bar[A]: Option[T[A]] = None
}
def foo[A] = {
type T[B] = Map[A, B]
new Bar[T]
}
val f: Option[Map[String, Int]] = foo[String].bar[Int]
}
我得到一個錯誤編譯(斯卡拉2.11.4)時:
test.scala:12: error: type mismatch;
found : Option[T[Int]]
(which expands to) Option[scala.collection.immutable.Map[A,Int]]
required: Option[Map[String,Int]]
val f: Option[Map[String, Int]] = foo[String].bar[Int]
^
one error found
爲什麼會出現這類錯誤?
現在你提到它了,我以前見過用於此的那些。 – 2014-11-24 05:16:54