Я не нашел, как объявить в Kotlin массив с предопределенным размером без его инициализации.
Это нормально:
lateinit var v:Array<Int>
Но я думаю,что нельзя поместить спецификацию размера в тип массива.
Если нужно указать размер.нужно сделать:
var v2:Array<Int> = Array<Int>(2){5}
В этом случае все элементы вектора равны 5
Ниже приведен пример с классами и массивами:
data class But(
val fufo: Int=0,
val tp: Int = 1
)
typealias ArBut = Array<But>
data class CArray (
var arrayC: ArBut = ArBut(2){But()}
)
val a = CArray(arrayOf(But(2,2),But(5,4),But(3,3)))
println(a.arrayC[2])
Это работает!Интересная часть заключается в том, что, поскольку инициализация не является частью типа, вы можете помещать массивы любого размера в класс, не ограничивая проверку.Было бы иначе, если бы размер был частью спецификации типа.
Теперь пример, использующий матрицу.Обратите внимание, что синтаксис немного сложен.
data class CMatr (
val matrC: Array<ArBut> = Array<ArBut>(2){ArBut(0){But()}}
)
val m = CMatr(arrayOf( arrayOf(But(2,2),But(5,4)),
arrayOf(But(-2,2),But(3,4)), arrayOf(But(1,1),But(5,3)) ))
println(m.matrC[2][1]) // Also works!
Невозможно указать размер в спецификации типа массива или я что-то упустил?