Spec-Zone.ru › Scala 3.2

Класс Array.Array

Объект-компаньон • Исходный код

final class Array[T](_length: Int) extends Serializable with Cloneable

Массивы — это изменяемые, индексированные коллекции значений. Array[T] — это представление Scala для T[] Java.

val numbers = Array(1, 2, 3, 4)
val first = numbers(0) // read the first element
numbers(3) = 100 // replace the 4th array element with 100
val biggerNumbers = numbers.map(_ * 2) // multiply all numbers by two

Массивы используют две распространенные особенности синтаксического сахара Scala, показанные на строках 2 и 3 приведенного выше примера кода. Строка 2 преобразуется в вызов apply(Int), а строка 3 — в вызов update(Int, T).

В scala.Predef существуют два неявных преобразования, часто применяемые к массивам: преобразование в scala.collection.ArrayOps (показано на строке 4 примера выше) и преобразование в scala.collection.mutable.ArraySeq (подтип scala.collection.Seq). Оба типа предоставляют множество стандартных операций, найденных в API коллекций Scala. Преобразование в ArrayOps временное, так как все операции, определенные на ArrayOps, возвращают Array, тогда как преобразование в ArraySeq постоянное, так как все операции возвращают ArraySeq.

Преобразование в ArrayOps имеет приоритет над преобразованием в ArraySeq. Например, рассмотрите следующий код:

val arr = Array(1, 2, 3)
val arrReversed = arr.reverse
val seqReversed : collection.Seq[Int] = arr.reverse

Значение arrReversed будет иметь тип Array[Int], с неявным преобразованием в ArrayOps для выполнения операции reverse. Значение seqReversed, с другой стороны, будет вычислено путем преобразования в ArraySeq сначала и вызова варианта reverse, который возвращает другой ArraySeq.

См. также

Спецификация языка Scala, для получения подробной информации о преобразованиях, которые компилятор Scala выполняет над массивами (соответственно разделы 6.6 и 6.15).

"Массивы Scala 2.8", документ Scala Improvement Document, описывающий массивы начиная со Scala 2.8.

"API коллекций Scala 2.8" раздел о Array Мартина Одерски для получения дополнительной информации.

Надтипы
Трейт Cloneable
Трейт Serializable
Класс Object
Трейт Matchable
Класс Any

Конкретные методы

Исходный код
def apply(i: Int): T

Элемент по заданному индексу.

Индексы начинаются с 0; xs.apply(0) — это первый элемент массива xs. Обратите внимание, что синтаксис индексирования xs(i) является сокращением для xs.apply(i).

Параметры значения
i

индекс

Возвращает

элемент по заданному индексу

Исключения
ArrayIndexOutOfBoundsException

если i < 0 или length <= i

Исходный код
override def clone(): Array[T]

Клонировать массив.

Возвращает

Клон массива.

Определяющие классы Object

Исходный код
def length: Int

Длина массива

Исходный код
def update(i: Int, x: T): Unit

Обновить элемент по заданному индексу.

Индексы начинаются с 0; xs.update(i, x) заменяет i-й элемент в массиве. Синтаксис xs(i) = x является сокращением для xs.update(i, x).

Параметры значения
i

индекс

x

значение, которое будет записано по индексу i

Исключения
ArrayIndexOutOfBoundsException

если i < 0 или length <= i

© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.2.0/scala/Array.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API