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

Я новичок в 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
Исключение при анализе выражения в AppDatabase Объявление поля POJO, значение init или null Android Kotlin добавляет элементы в ListView из Spinner SonarQube – Android не работает для gradle 3.0.0 Как перегружать конструкторы в котлин отличается в лямбда-обратном типе Какие эквиваленты Java 8 Stream.collect доступны в стандартной библиотеке Kotlin? Kotlin – переопределить / реализовать функцию доступа к массиву Котлин не смог скачать Kotlin – Operator '==' не может применяться к «Редактируемому!». и 'String' при сравнении строки Соглашение о кодировании для пустых функций, которые необходимо переопределить в Котлине DSL-подобный OnClick-прослушиватель для пользовательского представления с использованием kotlin в Android Запуск контрольных тестов с значка игры в Android Studio запускает их как JUnit на JVM Android Kotlin: Ошибка Неразрешенная ссылка: DaggerAppComponent Почему Smartcast не работает после nullcheck Функциональный способ накопления внутри функции Единицы в Котлине?