Я новичок в Kotlin и испытываю трудности с пониманием того, как функция init работает в контексте массива. В частности, если я пытаюсь создать массив типа String
используя:
val a = Array<String>(a_size){"n = $it"}
Это работает, но что означает "n = $it"
? Это не похоже на функцию init
поскольку она находится внутри фигурных скобок, а не внутри скобок.
Если мне нужен массив из Int
как бы выглядела функция init
или часть внутри фигурных фигурных скобок?
Вы вызываете конструктор с инициализатором:
/** * Creates a new array with the specified [size], where each element is calculated by calling the specified * [init] function. The [init] function returns an array element given its index. */ public inline constructor(size: Int, init: (Int) -> T)
Таким образом, вы передаете функцию конструктору, который вызывается для каждого элемента. Результат a
будет
[ "n = 0", "n = 1", ..., "n = $a_size" ]
Если вы просто хотите создать массив со всеми 0
значениями, сделайте это так:
val a = Array<Int>(a_size) { 0 }
Кроме того, вы можете создавать массивы следующим образом:
val a = arrayOf("a", "b", "c") val b = intArrayOf(1, 2, 3)