1
斯卡拉自我類型考慮到我可以創建具有自身的類型和限制的執行,並給出這樣的訪問成員特點:模式匹配
trait A { def a:String }
trait B { def b:String }
trait C {
self: A with B =>
lazy val c:String = a+b
}
爲什麼我不能把那個概念變成一種模式比賽。我知道下面的方法不起作用,但它是否缺少一些語法糖或者是否有限制可以防止這種情況發生?
case class AB(a:String, b:String) extends A with B
val ab = AB("a","b")
ab match {
case [email protected](A & B) => ab.a + ab.b
}
什麼工作是這些不太優雅的版本
ab match {
case a:A => a match {
case b:B => a.a + b.b
}
}
def checkInstanceOf(obj:AnyRef) =
obj.isInstanceOf[A] && obj.isInstanceOf[B]
ab match {
case ab if(checkInstanceOf(ab)) => ab.a + ab.b
}
我的目標是能寫基於正在實施兩個或多個性狀通用型主導的行爲。
笏!我以爲我是第一次嘗試這個,但顯然不是。 – Magnus
斯卡拉模式匹配是輝煌的,我不知道你可以做到這一點。然而,當我想到它時,Java 8現在有類似的東西 – Dici