Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- trait Events[+A] { outer =>
- private[this] val listeners = Set[A => Unit]()
- def observe(f: A => Unit) {
- listeners += f
- }
- def merge[B >: A](that: Events[B]) = new Events[B] {
- override def observe(f: B => Unit) {
- outer.observe(f)
- that.observe(f)
- }
- }
- def allListeners[B <: A]: List[B => Unit] = listeners.toList
- }
- trait EventSource[T] extends Events[T] {
- def raise(x: T) {
- allListeners.foreach(_(x))
- }
- }
Add Comment
Please, Sign In to add comment