@@ -20,6 +20,7 @@ trait IndexedView[+A] extends IndexedSeqOps[A, View, View[A]] with SeqView[A] {
20
20
}
21
21
}
22
22
23
+ override def prepended [B >: A ](elem : B ): IndexedView [B ] = new IndexedView .Prepended (elem, this )
23
24
override def take (n : Int ): IndexedView [A ] = new IndexedView .Take (this , n)
24
25
override def takeRight (n : Int ): IndexedView [A ] = new IndexedView .TakeRight (this , n)
25
26
override def drop (n : Int ): IndexedView [A ] = new IndexedView .Drop (this , n)
@@ -30,16 +31,17 @@ trait IndexedView[+A] extends IndexedSeqOps[A, View, View[A]] with SeqView[A] {
30
31
31
32
object IndexedView {
32
33
33
- class Id [+ A ](underlying : IndexedSeqOps [A , AnyConstr , _]) extends IndexedView [A ] {
34
+ class Id [+ A ](underlying : IndexedSeqOps [A , AnyConstr , _]) extends SeqView . Id (underlying) with IndexedView [A ] {
34
35
protected def finiteSize : Int = underlying.size
35
- def apply (idx : Int ): A = underlying(idx)
36
36
}
37
37
38
- class Take [A ](underlying : IndexedView [A ], n : Int ) extends IndexedView [A ] {
38
+ class Prepended [+ A ](elem : A , underlying : Iterable [A ] with IndexedSeqOps [A , AnyConstr , _]) extends SeqView .Prepended (elem, underlying) with IndexedView [A ] {
39
+ protected def finiteSize : Int = underlying.size
40
+ }
41
+
42
+ class Take [A ](underlying : IndexedView [A ], n : Int ) extends SeqView .Take (underlying, n) with IndexedView [A ] {
39
43
private [this ] val normN = n max 0
40
44
protected def finiteSize = underlying.size min normN
41
- @ throws[IndexOutOfBoundsException ]
42
- def apply (i : Int ) = underlying.apply(i)
43
45
}
44
46
45
47
class TakeRight [A ](underlying : IndexedView [A ], n : Int ) extends IndexedView [A ] {
@@ -63,10 +65,8 @@ object IndexedView {
63
65
def apply (i : Int ) = underlying.apply(i)
64
66
}
65
67
66
- class Map [A , B ](underlying : IndexedView [A ], f : A => B ) extends IndexedView [B ] {
68
+ class Map [A , B ](underlying : IndexedView [A ], f : A => B ) extends SeqView . Map (underlying, f) with IndexedView [B ] {
67
69
protected def finiteSize = underlying.size
68
- @ throws[IndexOutOfBoundsException ]
69
- def apply (n : Int ) = f(underlying.apply(n))
70
70
}
71
71
72
72
class Reverse [A ](underlying : IndexedView [A ]) extends IndexedView [A ] {
0 commit comments