observablemap.scala

来自「JAVA 语言的函数式编程扩展」· SCALA 代码 · 共 59 行

SCALA
59
字号
/*                     __                                               *\**     ________ ___   / /  ___     Scala API                            ****    / __/ __// _ | / /  / _ |    (c) 2003-2006, LAMP/EPFL             ****  __\ \/ /__/ __ |/ /__/ __ |                                         **** /____/\___/_/ |_/____/_/ | |                                         ****                          |/                                          **\*                                                                      */// $Id: ObservableMap.scala 11911 2007-06-05 15:57:59Z odersky $package scala.collection.mutable/** This class is typically used as a mixin. It adds a subscription *  mechanism to the <code>Map</code> class into which this abstract *  class is mixed in. Class <code>ObservableMap</code> publishes *  events of the type <code>Message</code>. * *  @author  Matthias Zenger *  @author  Martin Odersky *  @version 2.0, 31/12/2006 */trait ObservableMap[A, B, This <: ObservableMap[A, B, This]]       extends Map[A, B]      with Publisher[Message[(A, B)]      with Undoable, This]{ self: This =>  abstract override def update(key: A, value: B): Unit = get(key) match {    case None =>      super.update(key, value)      publish(new Include((key, value)) with Undoable {        def undo = -=(key)      })    case Some(old) =>      super.update(key, value)      publish(new Update((key, value)) with Undoable {        def undo = update(key, old)      })  }  abstract override def -= (key: A): Unit = get(key) match {    case None =>    case Some(old) =>      super.-=(key)      publish(new Remove((key, old)) with Undoable {        def undo = update(key, old)      })  }  abstract override def clear(): Unit = {    super.clear    publish(new Reset with Undoable {       def undo: Unit = throw new UnsupportedOperationException("cannot undo")     })  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?