Spec-Zone.ru › Scala 3.1

Класс scala.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.1.1/scala/Array.html

Spec-Zone.ru

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