Kotlin – Разница между циклами «forEachIndexed» и «for in»

Я смущен тем, каковы преимущества / недостатки каждого из этих подходов (при условии, что мне нужно использовать как index и product ):

 products.forEachIndexed{ index, product -> ... } for ((index, product) in products.withIndex()) { ... } 

products здесь – простая коллекция.

Есть ли какой-либо аргумент производительности / лучшей практики / etc для предпочтения друг другу?

    Нет, они одинаковы. Вы можете прочитать источник forEachIndexed и withIndex .

     public inline fun <T> Iterable<T>.forEachIndexed(action: (index: Int, T) -> Unit): Unit { var index = 0 for (item in this) action(index++, item) } public fun <T> Iterable<T>.withIndex(): Iterable<IndexedValue<T>> { return IndexingIterable { iterator() } } 

    forEachIndexed использует локальный var для подсчета индекса, а withIndex создает декоратор для итератора, который также использует индекс var для подсчета. Теоретически, withIndex создает еще один слой обертывания, но производительность должна быть одинаковой.

    Intereting Posts
    Доступ к значению параметра по умолчанию для функции в Котлине Android Firebase auth: класс дескриптора локального модуля для com.google.android.gms.crash и com.google.firebase.auth не найден Как определить текстовое представление вне класса активности? эквивалент тега <fragment> в anko DSL try-with-resources: функция «использовать» в Kotlin не всегда работает Как получить сообщение из идентификатора сообщения в smack. Замок Kotlin подстановочного знака в параметре обратного вызова списка Kotlin – Расходы на более высокие порядки? Kotlin AlarmManager и BroadcastReceiver не работают Как создать таблицу SQLite с помощью Anko в Котине? Кинжал 2, не может вводить презентатора в мою деятельность Настроить автоматическое завершение IntelliJ для сценария градиента в kotlin Kotlin lazy свойство в зависимости от другого свойства, инициализированного в init Kotlin: Обязательно: kotlin.Boolean. Найдено: kotlin.Boolean? Принятие объявления о создании платформы при использовании интерфейса в kotlin