observablecollection - Using Scala's ObservableMap -
observablecollection - Using Scala's ObservableMap -
i'm trying utilize scala.collection.mutable.observablemap.
i grabbed snippet below from scala-user , copied repl.
the email mentions ticket 2704 has been marked fixed snippet not work.
so has syntax changed or subscribe beingness called incorrectly?
this on 2.9.0.final
scala> import scala.collection.mutable._ import scala.collection.mutable._ scala> import scala.collection.script._ import scala.collection.script._ scala> class mymap extends hashmap[int,int] observablemap[int,int,mymap] <console>:13: error: wrong number of type arguments scala.collection.mutable.observablemap, should 2 class mymap extends hashmap[int,int] observablemap[int,int,mymap] ^ scala> class mymap extends hashmap[int,int] observablemap[int,int] defined class mymap scala> val map = new mymap map: mymap = map() scala> class mysub extends subscriber[message[(int,int)],mymap] { | def notify(pub: mymap, evt: message[(int,int)]) { println(evt) } | } defined class mysub scala> val sub = new mysub sub: mysub = mysub@49918c8f scala> map.subscribe(sub) <console>:18: error: type mismatch; found : mysub required: map.sub map.subscribe(sub)
the problem here mymap isn't refining pub type, mymap wants subscriber[message[(int, int)] undoable, observablemap[int, int]] , subscriber type subscriber[message[(int, int)] undoable, mymap]. there 2 options -- either alter subscriber pub type observablemap[int, int]:
import scala.collection.mutable._ import scala.collection.script._ class mymap extends hashmap[int,int] observablemap[int,int] val map = new mymap class mysub extends subscriber[message[(int,int)] undoable, observablemap[int, int]] { def notify(pub: observablemap[int, int], evt: message[(int,int)] undoable) { println(evt) } } val sub = new mysub map.subscribe(sub) or, alter mymap override pub type:
import scala.collection.mutable._ import scala.collection.script._ class mymap extends hashmap[int,int] observablemap[int,int] { type pub = mymap } val map = new mymap class mysub extends subscriber[message[(int,int)] undoable, mymap] { def notify(pub: mymap, evt: message[(int,int)] undoable) { println(evt) } } val sub = new mysub scala observablecollection publish-subscribe scala-2.9
Comments
Post a Comment