@@ -270,47 +270,44 @@ object DynamicTuple {
270
270
271
271
type Result = Take [This , N ]
272
272
273
- val arr = (self : Any ) match {
274
- case xxl : TupleXXL =>
275
- xxl.elems.asInstanceOf [Array [Object ]].take(actualN)
276
- case _ =>
277
- if (actualN == 0 )
278
- Array .emptyObjectArray
279
- else {
273
+ if (actualN == 0 ) ().asInstanceOf [Result ]
274
+ else {
275
+ val arr = (self : Any ) match {
276
+ case xxl : TupleXXL =>
277
+ xxl.elems.asInstanceOf [Array [Object ]].take(actualN)
278
+ case _ =>
280
279
val arr = new Array [Object ](actualN)
281
280
self.asInstanceOf [Product ].productIterator.asInstanceOf [Iterator [Object ]]
282
281
.copyToArray(arr, 0 , actualN)
283
282
arr
284
- }
285
- }
283
+ }
286
284
287
- dynamicFromIArray(arr.asInstanceOf [IArray [Object ]]).asInstanceOf [Result ]
285
+ dynamicFromIArray(arr.asInstanceOf [IArray [Object ]]).asInstanceOf [Result ]
286
+ }
288
287
}
289
288
290
289
def dynamicDrop [This <: Tuple , N <: Int ](self : This , n : N ): Drop [This , N ] = {
291
290
if (n < 0 ) throw new IndexOutOfBoundsException (n.toString)
292
291
val size = self.size
293
292
val actualN = Math .min(n, size)
293
+ val rem = size - actualN
294
294
295
295
type Result = Drop [This , N ]
296
296
297
- val arr = (self : Any ) match {
298
- case xxl : TupleXXL =>
299
- xxl.elems.asInstanceOf [Array [Object ]].drop(actualN)
300
- case _ =>
301
- val rem = size - actualN
302
-
303
- if (rem == 0 )
304
- Array .emptyObjectArray
305
- else {
297
+ if (rem == 0 ) ().asInstanceOf [Result ]
298
+ else {
299
+ val arr = (self : Any ) match {
300
+ case xxl : TupleXXL =>
301
+ xxl.elems.asInstanceOf [Array [Object ]].drop(actualN)
302
+ case _ =>
306
303
val arr = new Array [Object ](rem)
307
304
self.asInstanceOf [Product ].productIterator.asInstanceOf [Iterator [Object ]]
308
305
.drop(actualN).copyToArray(arr, 0 , rem)
309
306
arr
310
- }
311
- }
307
+ }
312
308
313
- dynamicFromIArray(arr.asInstanceOf [IArray [Object ]]).asInstanceOf [Result ]
309
+ dynamicFromIArray(arr.asInstanceOf [IArray [Object ]]).asInstanceOf [Result ]
310
+ }
314
311
}
315
312
316
313
def dynamicSplitAt [This <: Tuple , N <: Int ](self : This , n : N ): Split [This , N ] = {
0 commit comments