Проблема здесь в том, что MyMap не уточняет тип Pub, поэтому MyMap хочет Subscriber[Message[(Int, Int)] with Undoable, ObservableMap[Int, Int]]
, а ваш тип подписчика - Subscriber[Message[(Int, Int)] with Undoable, MyMap]
.Существует два варианта: либо изменить подписчика, чтобы тип Pub
был ObservableMap[Int, Int]
:
import scala.collection.mutable._
import scala.collection.script._
class MyMap extends HashMap[Int,Int] with ObservableMap[Int,Int]
val map = new MyMap
class MySub extends Subscriber[Message[(Int,Int)] with Undoable, ObservableMap[Int, Int]] {
def notify(pub: ObservableMap[Int, Int], evt: Message[(Int,Int)] with Undoable) { println(evt) }
}
val sub = new MySub
map.subscribe(sub)
, либо изменить MyMap, чтобы переопределить тип публикации:
import scala.collection.mutable._
import scala.collection.script._
class MyMap extends HashMap[Int,Int] with ObservableMap[Int,Int] {
type Pub = MyMap
}
val map = new MyMap
class MySub extends Subscriber[Message[(Int,Int)] with Undoable, MyMap] {
def notify(pub: MyMap, evt: Message[(Int,Int)] with Undoable) { println(evt) }
}
val sub = new MySub