@@ -42,162 +42,162 @@ object opaques
42
42
/** All the methods on Array[T] that don't mutate in-place can be used with IArray[T].
43
43
*/
44
44
def [T , U >: T : ClassTag ](arr : IArray [T ]) ++ (that : IArray [U ]): IArray [U ] =
45
- (arr. asInstanceOf [ Array [ T ]] ++ that.asInstanceOf [Array [U ]]).asInstanceOf [IArray [U ]]
45
+ (genericArrayOps( arr) ++ that.asInstanceOf [Array [U ]]).asInstanceOf [IArray [U ]]
46
46
47
47
def [T ](arr : IArray [T ]) contains(elem : T ): Boolean =
48
- arr.asInstanceOf [Array [T ]].contains(elem)
48
+ genericArrayOps( arr.asInstanceOf [Array [T ]]) .contains(elem)
49
49
50
50
def [T ](arr : IArray [T ]) count(p : T => Boolean ): Int =
51
- arr. asInstanceOf [ Array [ T ]] .count(p)
51
+ genericArrayOps( arr) .count(p)
52
52
53
53
def [T ](arr : IArray [T ]) drop(n : Int ): IArray [T ] =
54
- arr. asInstanceOf [ Array [ T ]] .drop(n).asInstanceOf [IArray [T ]]
54
+ genericArrayOps( arr) .drop(n).asInstanceOf [IArray [T ]]
55
55
56
56
def [T ](arr : IArray [T ]) dropRight(n : Int ): IArray [T ] =
57
- arr. asInstanceOf [ Array [ T ]] .dropRight(n).asInstanceOf [IArray [T ]]
57
+ genericArrayOps( arr) .dropRight(n).asInstanceOf [IArray [T ]]
58
58
59
59
def [T ](arr : IArray [T ]) dropWhile(p : T => Boolean ): IArray [T ] =
60
- arr. asInstanceOf [ Array [ T ]] .dropWhile(p).asInstanceOf [IArray [T ]]
60
+ genericArrayOps( arr) .dropWhile(p).asInstanceOf [IArray [T ]]
61
61
62
62
def [T ](arr : IArray [T ]) exists(p : T => Boolean ): IArray [T ] =
63
- arr. asInstanceOf [ Array [ T ]] .exists(p).asInstanceOf [IArray [T ]]
63
+ genericArrayOps( arr) .exists(p).asInstanceOf [IArray [T ]]
64
64
65
65
def [T ](arr : IArray [T ]) filter(p : T => Boolean ): IArray [T ] =
66
- arr. asInstanceOf [ Array [ T ]] .filter(p).asInstanceOf [IArray [T ]]
66
+ genericArrayOps( arr) .filter(p).asInstanceOf [IArray [T ]]
67
67
68
68
def [T ](arr : IArray [T ]) filterNot(p : T => Boolean ): IArray [T ] =
69
- arr. asInstanceOf [ Array [ T ]] .filterNot(p).asInstanceOf [IArray [T ]]
69
+ genericArrayOps( arr) .filterNot(p).asInstanceOf [IArray [T ]]
70
70
71
71
def [T ](arr : IArray [T ]) find(p : T => Boolean ): Option [T ] =
72
- arr. asInstanceOf [ Array [ T ]] .find(p)
72
+ genericArrayOps( arr) .find(p)
73
73
74
74
def [T , U : ClassTag ](arr : IArray [T ]) flatMap(f : T => IterableOnce [U ]): IArray [U ] =
75
- arr. asInstanceOf [ Array [ T ]] .flatMap(f).asInstanceOf [IArray [U ]]
75
+ genericArrayOps( arr) .flatMap(f).asInstanceOf [IArray [U ]]
76
76
77
77
def [T , U : ClassTag ](arr : IArray [T ]) flatten(given T => Iterable [U ]): IArray [U ] =
78
- arr. asInstanceOf [ Array [ T ]] .flatten.asInstanceOf [IArray [U ]]
78
+ genericArrayOps( arr) .flatten.asInstanceOf [IArray [U ]]
79
79
80
80
def [T , U >: T : ClassTag ](arr : IArray [T ]) fold(z : U )(op : (U , U ) => U ): U =
81
- arr. asInstanceOf [ Array [ T ]] .fold(z)(op)
81
+ genericArrayOps( arr) .fold(z)(op)
82
82
83
- def [T , U >: T : ClassTag ](arr : IArray [T ]) foldLeft(z : U )(op : (U , T ) => U ): U =
84
- arr. asInstanceOf [ Array [ T ]] .foldLeft(z)(op)
83
+ def [T , U : ClassTag ](arr : IArray [T ]) foldLeft(z : U )(op : (U , T ) => U ): U =
84
+ genericArrayOps( arr) .foldLeft(z)(op)
85
85
86
- def [T , U >: T : ClassTag ](arr : IArray [T ]) foldRight(z : U )(op : (T , U ) => U ): U =
87
- arr. asInstanceOf [ Array [ T ]] .foldRight(z)(op)
86
+ def [T , U : ClassTag ](arr : IArray [T ]) foldRight(z : U )(op : (T , U ) => U ): U =
87
+ genericArrayOps( arr) .foldRight(z)(op)
88
88
89
89
def [T ](arr : IArray [T ]) forall(p : T => Boolean ): Boolean =
90
- arr. asInstanceOf [ Array [ T ]] .forall(p)
90
+ genericArrayOps( arr) .forall(p)
91
91
92
92
def [T , U ](arr : IArray [T ]) foreach(f : T => U ): Unit =
93
- arr. asInstanceOf [ Array [ T ]] .foreach(f)
93
+ genericArrayOps( arr) .foreach(f)
94
94
95
95
def [T ](arr : IArray [T ]) head : T =
96
- arr. asInstanceOf [ Array [ T ]] .head
96
+ genericArrayOps( arr) .head
97
97
98
98
def [T ](arr : IArray [T ]) headOption : Option [T ] =
99
- arr. asInstanceOf [ Array [ T ]] .headOption
99
+ genericArrayOps( arr) .headOption
100
100
101
101
def [T ](arr : IArray [T ]) indexOf(elem : T , from : Int = 0 ): Int =
102
- arr.asInstanceOf [Array [T ]].indexOf(elem, from)
102
+ genericArrayOps( arr.asInstanceOf [Array [T ]]) .indexOf(elem, from)
103
103
104
104
def [T ](arr : IArray [T ]) indexWhere(p : T => Boolean , from : Int = 0 ): Int =
105
- arr. asInstanceOf [ Array [ T ]] .indexWhere(p, from)
105
+ genericArrayOps( arr) .indexWhere(p, from)
106
106
107
107
def [T ](arr : IArray [T ]) indices : Range =
108
- arr. asInstanceOf [ Array [ T ]] .indices
108
+ genericArrayOps( arr) .indices
109
109
110
110
def [T ](arr : IArray [T ]) init : IArray [T ] =
111
- arr. asInstanceOf [ Array [ T ]] .init.asInstanceOf [IArray [T ]]
111
+ genericArrayOps( arr) .init.asInstanceOf [IArray [T ]]
112
112
113
113
def [T ](arr : IArray [T ]) isEmpty : Boolean =
114
- arr. asInstanceOf [ Array [ T ]] .isEmpty
114
+ genericArrayOps( arr) .isEmpty
115
115
116
116
def [T ](arr : IArray [T ]) iterator : Iterator [T ] =
117
- arr. asInstanceOf [ Array [ T ]] .iterator
117
+ genericArrayOps( arr) .iterator
118
118
119
119
def [T ](arr : IArray [T ]) last : T =
120
- arr. asInstanceOf [ Array [ T ]] .last
120
+ genericArrayOps( arr) .last
121
121
122
122
def [T ](arr : IArray [T ]) lastOption : Option [T ] =
123
- arr. asInstanceOf [ Array [ T ]] .lastOption
123
+ genericArrayOps( arr) .lastOption
124
124
125
125
def [T ](arr : IArray [T ]) lastIndexOf(elem : T , from : Int = 0 ): Int =
126
- arr.asInstanceOf [Array [T ]].lastIndexOf(elem, from)
126
+ genericArrayOps( arr.asInstanceOf [Array [T ]]) .lastIndexOf(elem, from)
127
127
128
128
def [T ](arr : IArray [T ]) lastIndexWhere(p : T => Boolean , from : Int = 0 ): Int =
129
- arr. asInstanceOf [ Array [ T ]] .lastIndexWhere(p, from)
129
+ genericArrayOps( arr) .lastIndexWhere(p, from)
130
130
131
131
def [T , U : ClassTag ](arr : IArray [T ]) map(f : T => U ): IArray [U ] =
132
- arr. asInstanceOf [ Array [ T ]] .map(f).asInstanceOf [IArray [U ]]
132
+ genericArrayOps( arr) .map(f).asInstanceOf [IArray [U ]]
133
133
134
134
def [T ](arr : IArray [T ]) nonEmpty : Boolean =
135
- arr. asInstanceOf [ Array [ T ]] .nonEmpty
135
+ genericArrayOps( arr) .nonEmpty
136
136
137
137
def [T ](arr : IArray [T ]) partition(p : T => Boolean ): (IArray [T ], IArray [T ]) =
138
- arr. asInstanceOf [ Array [ T ]] .partition(p) match {
138
+ genericArrayOps( arr) .partition(p) match {
139
139
case (x, y) => (x.asInstanceOf [IArray [T ]], y.asInstanceOf [IArray [T ]])
140
140
}
141
141
142
142
def [T ](arr : IArray [T ]) reverse : IArray [T ] =
143
- arr. asInstanceOf [ Array [ T ]] .reverse.asInstanceOf [IArray [T ]]
143
+ genericArrayOps( arr) .reverse.asInstanceOf [IArray [T ]]
144
144
145
145
def [T , U >: T : ClassTag ](arr : IArray [T ]) scan(z : U )(op : (U , U ) => U ): IArray [U ] =
146
- arr. asInstanceOf [ Array [ T ]] .scan(z)(op).asInstanceOf [IArray [U ]]
146
+ genericArrayOps( arr) .scan(z)(op).asInstanceOf [IArray [U ]]
147
147
148
148
def [T , U : ClassTag ](arr : IArray [T ]) scanLeft(z : U )(op : (U , T ) => U ): IArray [U ] =
149
- arr. asInstanceOf [ Array [ T ]] .scanLeft(z)(op).asInstanceOf [IArray [U ]]
149
+ genericArrayOps( arr) .scanLeft(z)(op).asInstanceOf [IArray [U ]]
150
150
151
151
def [T , U : ClassTag ](arr : IArray [T ]) scanRight(z : U )(op : (T , U ) => U ): IArray [U ] =
152
- arr. asInstanceOf [ Array [ T ]] .scanRight(z)(op).asInstanceOf [IArray [U ]]
152
+ genericArrayOps( arr) .scanRight(z)(op).asInstanceOf [IArray [U ]]
153
153
154
154
def [T ](arr : IArray [T ]) size : Int =
155
- arr.asInstanceOf [ Array [ T ]].size
155
+ arr.length
156
156
157
157
def [T ](arr : IArray [T ]) slice(from : Int , until : Int ): IArray [T ] =
158
- arr. asInstanceOf [ Array [ T ]] .slice(from, until).asInstanceOf [IArray [T ]]
158
+ genericArrayOps( arr) .slice(from, until).asInstanceOf [IArray [T ]]
159
159
160
160
def [T , U : ClassTag ](arr : IArray [T ]) sortBy(f : T => U )(given math .Ordering [U ]): IArray [T ] =
161
- arr. asInstanceOf [ Array [ T ]] .sortBy(f).asInstanceOf [IArray [T ]]
161
+ genericArrayOps( arr) .sortBy(f).asInstanceOf [IArray [T ]]
162
162
163
163
def [T ](arr : IArray [T ]) sortWith(f : (T , T ) => Boolean ): IArray [T ] =
164
- arr. asInstanceOf [ Array [ T ]] .sortWith(f).asInstanceOf [IArray [T ]]
164
+ genericArrayOps( arr) .sortWith(f).asInstanceOf [IArray [T ]]
165
165
166
166
def [T ](arr : IArray [T ]) sorted(given math .Ordering [T ]): IArray [T ] =
167
- arr. asInstanceOf [ Array [ T ]] .sorted.asInstanceOf [IArray [T ]]
167
+ genericArrayOps( arr) .sorted.asInstanceOf [IArray [T ]]
168
168
169
169
def [T ](arr : IArray [T ]) span(p : T => Boolean ): (IArray [T ], IArray [T ]) =
170
- arr. asInstanceOf [ Array [ T ]] .span(p) match {
170
+ genericArrayOps( arr) .span(p) match {
171
171
case (x, y) => (x.asInstanceOf [IArray [T ]], y.asInstanceOf [IArray [T ]])
172
172
}
173
173
174
174
def [T ](arr : IArray [T ]) splitAt(n : Int ): (IArray [T ], IArray [T ]) =
175
- arr. asInstanceOf [ Array [ T ]] .splitAt(n) match {
175
+ genericArrayOps( arr) .splitAt(n) match {
176
176
case (x, y) => (x.asInstanceOf [IArray [T ]], y.asInstanceOf [IArray [T ]])
177
177
}
178
178
179
179
def [T , U >: T : ClassTag ](arr : IArray [T ]) startsWith(that : IArray [U ], offset : Int = 0 ): Boolean =
180
- arr. asInstanceOf [ Array [ T ]] .startsWith(that.asInstanceOf [Array [U ]])
180
+ genericArrayOps( arr) .startsWith(that.asInstanceOf [Array [U ]])
181
181
182
182
def [T ](arr : IArray [T ]) tail : IArray [T ] =
183
- arr. asInstanceOf [ Array [ T ]] .tail.asInstanceOf [IArray [T ]]
183
+ genericArrayOps( arr) .tail.asInstanceOf [IArray [T ]]
184
184
185
185
def [T ](arr : IArray [T ]) take(n : Int ): IArray [T ] =
186
- arr. asInstanceOf [ Array [ T ]] .take(n).asInstanceOf [IArray [T ]]
186
+ genericArrayOps( arr) .take(n).asInstanceOf [IArray [T ]]
187
187
188
188
def [T ](arr : IArray [T ]) takeRight(n : Int ): IArray [T ] =
189
- arr. asInstanceOf [ Array [ T ]] .takeRight(n).asInstanceOf [IArray [T ]]
189
+ genericArrayOps( arr) .takeRight(n).asInstanceOf [IArray [T ]]
190
190
191
191
def [T ](arr : IArray [T ]) takeWhile(p : T => Boolean ): IArray [T ] =
192
- arr. asInstanceOf [ Array [ T ]] .takeWhile(p).asInstanceOf [IArray [T ]]
192
+ genericArrayOps( arr) .takeWhile(p).asInstanceOf [IArray [T ]]
193
193
194
194
def [U : ClassTag , V : ClassTag ](arr : IArray [(U , V )]) unzip : (IArray [U ], IArray [V ]) =
195
- arr. asInstanceOf [ Array [( U , V )]] .unzip match {
195
+ genericArrayOps(arr) .unzip match {
196
196
case (x, y) => (x.asInstanceOf [IArray [U ]], y.asInstanceOf [IArray [V ]])
197
197
}
198
198
199
- def [T , U : ClassTag ](arr : IArray [T ]) zip(that : IterableOnce [U ]): IArray [(T , U )] =
200
- arr. asInstanceOf [ Array [ T ]] .zip(that).asInstanceOf [IArray [(T , U )]]
199
+ def [T , U : ClassTag ](arr : IArray [T ]) zip(that : IArray [U ]): IArray [(T , U )] =
200
+ genericArrayOps( arr) .zip(that).asInstanceOf [IArray [(T , U )]]
201
201
end opaques
202
202
203
203
type IArray [+ T ] = opaques.IArray [T ]
0 commit comments