更新:在repl中运行的简化代码
我想使用扩展公共标记特征的路径依赖类型创建特定于域的事件,如Created,Updated,Deleted等,以便域可以(a)发送彼此的事件和(b)按域进行模式匹配:
trait Event
trait Domain {
case class Created(name: String) extends Event
}
// declare three instances of Domain trait, one here and two
// in an inner scope
object DomainC extends Domain
{
object DomainA extends Domain
object DomainB extends Domain
def lookingForAs(event: Event): Unit = {
println(s"${event.getClass}")
event match {
case DomainB.Created(_) => println("Oops matched a B")
case DomainC.Created(_) => println("Oops matched a C")
case DomainA.Created(_) => println("Found my A")
}
}
lookingForAs(DomainA.Created("I am an A"))
}
结果是"哎呀匹配C"
lookingForAs
功能
Scala 2.10.2,2.10.3,2.10.4和2.11.5的REPL中的结果相同
答案 0 :(得分:0)
来自scala-users的答案Google Group:Jason Zaugg(反语)说这是一个Scala错误并创建了SI-9110来跟踪它以获得针对2.12的修复程序。再次感谢,杰森