這是一個簡化的情況下,和我完全打開到一個不同的/更好的方式來實現這一點證明嵌套路徑依賴類型的成員的等價
trait Container {
type T
def data: List[T]
}
trait Transform {
val from: Container
val to: Container
def xform: from.T => to.T
}
case class Identity(c: Container) extends Transform {
val from = c
val to = c
def xform = { t: from.T => t }
}
這產生的預測的錯誤:
<console>:12: error: type mismatch;
found : t.type (with underlying type Identity.this.from.T)
required: Identity.this.to.T
def xform = { t: from.T => t }
目標基本上是有一個轉換,它轉換容器底層的對象,但能夠說服類型檢查器(沒有可怕的可怕的演員),類型是相同的。
什麼是能夠以這種方式顯示等值和類型關係的最佳方式?
就像我說的,完全開放的改制代碼,我在實際的例子它是一個真正的目的:)
你打算添加_any_類型參數嗎? :) –