summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPhilipp Haller <hallerp@gmail.com>2008-08-28 16:37:38 +0000
committerPhilipp Haller <hallerp@gmail.com>2008-08-28 16:37:38 +0000
commitd0299fb471e99d2cdf35325cb1823336185c752d (patch)
treef46f3f24c98186a0a8a504bfd387f094c2d9929f /src
parent532013fd52692ddb29f4b2e9adf5594987d81861 (diff)
downloadscala-d0299fb471e99d2cdf35325cb1823336185c752d.tar.gz
scala-d0299fb471e99d2cdf35325cb1823336185c752d.tar.bz2
scala-d0299fb471e99d2cdf35325cb1823336185c752d.zip
Applied patch for #1297
Diffstat (limited to 'src')
-rw-r--r--src/library/scala/Range.scala20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/library/scala/Range.scala b/src/library/scala/Range.scala
index f25e58fbf4..c0152c6ce4 100644
--- a/src/library/scala/Range.scala
+++ b/src/library/scala/Range.scala
@@ -35,6 +35,26 @@ class Range(val start: Int, val end: Int, val step: Int) extends RandomAccessSeq
*/
def by(step: Int): Range = new Range(start, end, step)
+ override def foreach(f: Int => Unit) {
+ if (step > 0) {
+ var i = this.start
+ val until = if (inInterval(end)) end + 1 else end
+
+ while (i < until) {
+ f(i)
+ i += step
+ }
+ } else {
+ var i = this.start
+ val until = if (inInterval(end)) end - 1 else end
+
+ while (i > until) {
+ f(i)
+ i += step
+ }
+ }
+ }
+
lazy val length: Int = {
if (start < end && this.step < 0) 0
else if (start > end && this.step > 0) 0