Массивы
Массивы в 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 }
© 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