summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2011-07-16 12:32:39 +0000
committerPaul Phillips <paulp@improving.org>2011-07-16 12:32:39 +0000
commita94747dc47d5de8046448619bd27d3c0178578b9 (patch)
tree498c0220e7c08d0b697fdda056c0d3aea3797dc0 /src
parent873b4b8b55059905e8bda36c1adea82ca987a8da (diff)
downloadscala-a94747dc47d5de8046448619bd27d3c0178578b9.tar.gz
scala-a94747dc47d5de8046448619bd27d3c0178578b9.tar.bz2
scala-a94747dc47d5de8046448619bd27d3c0178578b9.zip
document scala.util.control.Breaks methods
Authored by Chris League and Roland Kuhn
Diffstat (limited to 'src')
-rw-r--r--src/library/scala/util/control/Breaks.scala26
1 files changed, 22 insertions, 4 deletions
diff --git a/src/library/scala/util/control/Breaks.scala b/src/library/scala/util/control/Breaks.scala
index 9b1abefe00..bb84fcb5fe 100644
--- a/src/library/scala/util/control/Breaks.scala
+++ b/src/library/scala/util/control/Breaks.scala
@@ -16,7 +16,7 @@ package scala.util.control
*
* breakable {
* for (...) {
- * if (...) break
+ * if (...) break()
* }
* }
* }}}
@@ -27,7 +27,11 @@ class Breaks {
private val breakException = new BreakControl
- /** A block from which one can exit with a `break`. */
+ /**
+ * A block from which one can exit with a `break`. The `break` may be
+ * executed further down in the call stack provided that it is called on the
+ * exact same instance of `Breaks`.
+ */
def breakable(op: => Unit) {
try {
op
@@ -41,6 +45,18 @@ class Breaks {
def catchBreak(onBreak: => Unit): Unit
}
+ /**
+ * This variant enables the execution of a code block in case of a `break()`:
+ * {{{
+ * tryBreakable {
+ * for (...) {
+ * if (...) break()
+ * }
+ * } catchBreak {
+ * doCleanup()
+ * }
+ * }}}
+ */
def tryBreakable(op: => Unit) = new TryBlock {
def catchBreak(onBreak: => Unit) = try {
op
@@ -51,9 +67,11 @@ class Breaks {
}
}
- /** Break from dynamically closest enclosing breakable block.
+ /**
+ * Break from dynamically closest enclosing breakable block using this exact
+ * `Breaks` instance.
*
- * @note This might be different than the statically closest enclosing block!
+ * @note This might be different than the statically closest enclosing block!
*/
def break() { throw breakException }
}