diff options
author | paltherr <paltherr@epfl.ch> | 2003-03-20 12:44:24 +0000 |
---|---|---|
committer | paltherr <paltherr@epfl.ch> | 2003-03-20 12:44:24 +0000 |
commit | 3be5b4361ad5a651556c4c8b6cfd5d25f4f8e5e1 (patch) | |
tree | 6609b803dff0661e51ab951da8bda1c3bed3cfae /sources | |
parent | f449cd95e9e1805f50b1c267c6b18c281673cb3b (diff) | |
download | scala-3be5b4361ad5a651556c4c8b6cfd5d25f4f8e5e1.tar.gz scala-3be5b4361ad5a651556c4c8b6cfd5d25f4f8e5e1.tar.bz2 scala-3be5b4361ad5a651556c4c8b6cfd5d25f4f8e5e1.zip |
- Added methods take & drop
Diffstat (limited to 'sources')
-rw-r--r-- | sources/scala/Iterator.scala | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/sources/scala/Iterator.scala b/sources/scala/Iterator.scala index 89c6507e66..57a97ac441 100644 --- a/sources/scala/Iterator.scala +++ b/sources/scala/Iterator.scala @@ -7,6 +7,16 @@ trait Iterator[a] { def foreach(f: a => Unit): Unit = while (hasNext) { f(next) } + def take(n: Int) = new Iterator[a] { + var remaining = n; + def hasNext = remaining > 0 && Iterator.this.hasNext; + def next: a = + if (hasNext) { remaining = remaining - 1; Iterator.this.next } + else error("next on empty iterator"); + } + + def drop(n: Int): Iterator[a] = if (n > 0) { next; drop(n - 1); } else this; + def map[b](f: a => b): Iterator[b] = new Iterator[b] { def hasNext = Iterator.this.hasNext; def next = f(Iterator.this.next) |