diff options
-rw-r--r-- | src/library/scala/collection/SeqViewLike.scala | 11 | ||||
-rw-r--r-- | test/files/run/ReverseSeqView.scala | 25 |
2 files changed, 35 insertions, 1 deletions
diff --git a/src/library/scala/collection/SeqViewLike.scala b/src/library/scala/collection/SeqViewLike.scala index 66345ed311..1a8cd20013 100644 --- a/src/library/scala/collection/SeqViewLike.scala +++ b/src/library/scala/collection/SeqViewLike.scala @@ -117,10 +117,16 @@ trait SeqViewLike[+A, } trait Reversed extends Transformed[A] { - override def iterator: Iterator[A] = self.reverseIterator + override def iterator: Iterator[A] = createReversedIterator override def length: Int = self.length override def apply(idx: Int): A = self.apply(length - 1 - idx) override def stringPrefix = self.stringPrefix+"R" + + private def createReversedIterator = { + var lst = List[A]() + for (elem <- self) lst ::= elem + lst.iterator + } } trait Patched[B >: A] extends Transformed[B] { @@ -166,6 +172,9 @@ trait SeqViewLike[+A, override def padTo[B >: A, That](len: Int, elem: B)(implicit bf: CanBuildFrom[This, B, That]): That = patch(length, fill(len - length)(elem), 0) + override def reverseMap[B, That](f: A => B)(implicit bf: CanBuildFrom[This, B, That]): That = + reverse.map(f) + override def stringPrefix = "SeqView" } diff --git a/test/files/run/ReverseSeqView.scala b/test/files/run/ReverseSeqView.scala new file mode 100644 index 0000000000..8f0ecb13da --- /dev/null +++ b/test/files/run/ReverseSeqView.scala @@ -0,0 +1,25 @@ + + + + + + +object Test extends Application { + + val lstv = List(1, 2, 3).view + val lstvr = lstv.reverse + lstvr.iterator + lstvr.reverse + lstvr.reverseIterator + lstvr.reverseMap(_ + 1) + +} + + + + + + + + + |