observableset.scala

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

SCALA
46
字号
/*                     __                                               *\**     ________ ___   / /  ___     Scala API                            ****    / __/ __// _ | / /  / _ |    (c) 2003-2006, LAMP/EPFL             ****  __\ \/ /__/ __ |/ /__/ __ |                                         **** /____/\___/_/ |_/____/_/ | |                                         ****                          |/                                          **\*                                                                      */// $Id: ObservableSet.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>Set</code> class into which this abstract *  class is mixed in. Class <code>ObservableSet</code> publishes *  events of the type <code>Message</code>. * *  @author  Matthias Zenger *  @version 1.0, 08/07/2003 */trait ObservableSet[A, This <: ObservableSet[A, This]]       extends Set[A]      with Publisher[Message[A]      with Undoable, This]{ self: This =>  abstract override def +=(elem: A): Unit = if (!contains(elem)) {    super.+=(elem)    publish(new Include(elem) with Undoable { def undo = -=(elem) })  }  abstract override def -=(elem: A): Unit = if (contains(elem)) {    super.-=(elem)    publish(new Remove(elem) with Undoable { def undo = +=(elem) })  }  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 + -
显示快捷键?