Spec-Zone.ru › Kotlin 1.7

Массивы

Массивы в Kotlin представлены классом Array. Он имеет функции get() и set(), которые превращаются в [] благодаря соглашениям по перегрузке операторов, а также свойство size, наряду с другими полезными методами-членами:

class Array<T> private constructor() {
    val size: Int
    operator fun get(index: Int): T
    operator fun set(index: Int, value: T): Unit

    operator fun iterator(): Iterator<T>
    // ...
}

Чтобы создать массив, используйте функцию arrayOf() и передайте в неё значения элементов, таким образом arrayOf(1, 2, 3) создаёт массив [1, 2, 3]. В качестве альтернативы, можно использовать функцию arrayOfNulls() для создания массива заданного размера, заполненного элементами null.

Ещё один вариант — использовать конструктор Array, который принимает размер массива и функцию, возвращающую значения элементов массива по их индексу:

fun main() {
//sampleStart
    // Creates an Array<String> with values ["0", "1", "4", "9", "16"]
    val asc = Array(5) { i -> (i * i).toString() }
    asc.forEach { println(it) }
//sampleEnd
}

Операция [] означает вызовы методов-членов get() и set().

Массивы в Kotlin являются инвариантными. Это означает, что Kotlin не позволяет нам присваивать массив Array<String> массиву Array<Any>, что предотвращает возможные ошибки во время выполнения (но вы можете использовать Array<out Any>, см. Проекции типов).

Массивы примитивных типов

Kotlin также имеет классы, представляющие массивы примитивных типов без накладных расходов на автоупаковку: ByteArray, ShortArray, IntArray, и так далее. Эти классы не имеют отношения к наследованию от класса Array, но они имеют тот же набор методов и свойств. Каждый из них также имеет соответствующую фабричную функцию:

val x: IntArray = intArrayOf(1, 2, 3)
x[0] = x[1] + x[2]
// Array of int of size 5 with values [0, 0, 0, 0, 0]
val arr = IntArray(5)

// Example of initializing the values in the array with a constant
// Array of int of size 5 with values [42, 42, 42, 42, 42]
val arr = IntArray(5) { 42 }

// Example of initializing the values in the array using a lambda
// Array of int of size 5 with values [0, 1, 2, 3, 4] (values initialized to their index value)
var arr = IntArray(5) { it * 1 } 
Последнее изменение: 10 августа 2022
Строки Целые типы без знака

© 2010–2022 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/arrays.html

Spec-Zone.ru

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