|
1 | 1 | package scala
|
2 | 2 | import reflect.ClassTag
|
3 | 3 |
|
| 4 | +import scala.collection.immutable |
| 5 | + |
4 | 6 | /** An immutable array. An `IArray[T]` has the same representation as an `Array[T]`,
|
5 | 7 | * but it cannot be updated. Unlike regular arrays, immutable arrays are covariant.
|
6 | 8 | */
|
@@ -270,6 +272,50 @@ object opaques:
|
270 | 272 | extension [T](arr: IArray[T]) def zip[U: ClassTag](that: IArray[U]): IArray[(T, U)] =
|
271 | 273 | genericArrayOps(arr).zip(that)
|
272 | 274 |
|
| 275 | + /** Conversion from IArray to immutable.ArraySeq */ |
| 276 | + extension [T](arr: IArray[T]) def toSeq: immutable.ArraySeq[T] = |
| 277 | + immutable.ArraySeq.unsafeWrapArray(arr.asInstanceOf[Array[T]]) |
| 278 | + |
| 279 | + /** Conversion from IArray to immutable.ArraySeq */ |
| 280 | + extension [T <: AnyRef](arr: IArray[T]) def toSeq: immutable.ArraySeq[T] = |
| 281 | + immutable.ArraySeq.ofRef(arr.asInstanceOf[Array[T]]) |
| 282 | + |
| 283 | + /** Conversion from IArray to immutable.ArraySeq */ |
| 284 | + extension (arr: IArray[Int]) def toSeq: immutable.ArraySeq[Int] = |
| 285 | + immutable.ArraySeq.ofInt(arr.asInstanceOf[Array[Int]]) |
| 286 | + |
| 287 | + /** Conversion from IArray to immutable.ArraySeq */ |
| 288 | + extension (arr: IArray[Double]) def toSeq: immutable.ArraySeq[Double] = |
| 289 | + immutable.ArraySeq.ofDouble(arr.asInstanceOf[Array[Double]]) |
| 290 | + |
| 291 | + /** Conversion from IArray to immutable.ArraySeq */ |
| 292 | + extension (arr: IArray[Long]) def toSeq: immutable.ArraySeq[Long] = |
| 293 | + immutable.ArraySeq.ofLong(arr.asInstanceOf[Array[Long]]) |
| 294 | + |
| 295 | + /** Conversion from IArray to immutable.ArraySeq */ |
| 296 | + extension (arr: IArray[Float]) def toSeq: immutable.ArraySeq[Float] = |
| 297 | + immutable.ArraySeq.ofFloat(arr.asInstanceOf[Array[Float]]) |
| 298 | + |
| 299 | + /** Conversion from IArray to immutable.ArraySeq */ |
| 300 | + extension (arr: IArray[Char]) def toSeq: immutable.ArraySeq[Char] = |
| 301 | + immutable.ArraySeq.ofChar(arr.asInstanceOf[Array[Char]]) |
| 302 | + |
| 303 | + /** Conversion from IArray to immutable.ArraySeq */ |
| 304 | + extension (arr: IArray[Byte]) def toSeq: immutable.ArraySeq[Byte] = |
| 305 | + immutable.ArraySeq.ofByte(arr.asInstanceOf[Array[Byte]]) |
| 306 | + |
| 307 | + /** Conversion from IArray to immutable.ArraySeq */ |
| 308 | + extension (arr: IArray[Short]) def toSeq: immutable.ArraySeq[Short] = |
| 309 | + immutable.ArraySeq.ofShort(arr.asInstanceOf[Array[Short]]) |
| 310 | + |
| 311 | + /** Conversion from IArray to immutable.ArraySeq */ |
| 312 | + extension (arr: IArray[Boolean]) def toSeq: immutable.ArraySeq[Boolean] = |
| 313 | + immutable.ArraySeq.ofBoolean(arr.asInstanceOf[Array[Boolean]]) |
| 314 | + |
| 315 | + /** Conversion from IArray to immutable.ArraySeq */ |
| 316 | + extension (arr: IArray[Unit]) def toSeq: immutable.ArraySeq[Unit] = |
| 317 | + immutable.ArraySeq.ofUnit(arr.asInstanceOf[Array[Unit]]) |
| 318 | + |
273 | 319 | end opaques
|
274 | 320 |
|
275 | 321 | type IArray[+T] = opaques.IArray[T]
|
|
0 commit comments