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

Я новичок в 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) 
Intereting Posts
Я сейчас разрабатываю приложение для Android с Kotlin, но произошла ошибка: CompilationException: не удалось встроить метод в 'readText' Как указать поле в коробке может быть равно NULL в моем коде миграции Realm? Как имитировать излучение 2 infiite Наблюдаемые потоки и есть другие Observable, которые объединяют их и буферируют каждые 10 секунд? Использование функциональных интерфейсов с функциями функций в Котлине Свойства делегата Kotlin, реализующие функцию оператора «предоставлятьDelegate», но метод никогда не вызывал Kotlin: цикл через отфильтрованный (возможно, пустой и не более одного элемента) список Как создать асинхронный вызов с помощью дооснащения и наблюдения в Котлине? Какие пакеты / функции импортируются по умолчанию в Котлин? Kotlin map & уменьшить массив строк на карту <String, Any!> Фрагмент isDetached условный не запускается, хотя фрагмент, безусловно, отсоединен Невозможно создать прослушиватель событий Spring Data в Котлине Возможно ли лениво инициализировать свойство и утверждать его? Циркулярная зависимость (Voronoi Halfedge) Я хочу определить, является ли класс JVM классом Котлина или нет Kotlin: Как я могу использовать отражение в пакетах?