Функция инициализации массива Котлина

Я новичок в Kotlin и испытываю трудности с пониманием того, как функция init работает в контексте массива. В частности, если я пытаюсь создать массив типа String используя:

 val a = Array<String>(a_size){"n = $it"} 
  1. Это работает, но что означает "n = $it" ? Это не похоже на функцию init поскольку она находится внутри фигурных скобок, а не внутри скобок.

  2. Если мне нужен массив из 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)