Массивы
Массивы в 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–2023 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/arrays.html