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

Popular posts from this blog

iphone - Dismissing a UIAlertView -

c# - Can ProtoBuf-Net deserialize to a flat class? -

javascript - Change element in each JQuery tab to dynamically generated colors -