diff options
author | Paul Phillips <paulp@improving.org> | 2011-07-16 12:32:39 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2011-07-16 12:32:39 +0000 |
commit | a94747dc47d5de8046448619bd27d3c0178578b9 (patch) | |
tree | 498c0220e7c08d0b697fdda056c0d3aea3797dc0 | |
parent | 873b4b8b55059905e8bda36c1adea82ca987a8da (diff) | |
download | scala-a94747dc47d5de8046448619bd27d3c0178578b9.tar.gz scala-a94747dc47d5de8046448619bd27d3c0178578b9.tar.bz2 scala-a94747dc47d5de8046448619bd27d3c0178578b9.zip |
document scala.util.control.Breaks methods
Authored by Chris League and Roland Kuhn
-rw-r--r-- | src/library/scala/util/control/Breaks.scala | 26 |
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 } } |