Sobes.tech
Назад к вопросам
Junior — Middle
69

Можно ли использовать forEach для вычисления суммы числовых значений в коллекции пар ключ-значение в Kotlin?

Ответ от нейросети

sobes.tech AI

В Kotlin можно использовать forEach для обхода коллекции пар ключ-значение, но для вычисления суммы числовых значений это не самый удобный и идиоматичный способ. forEach не возвращает результат, поэтому нужно заводить внешнюю переменную-счетчик и изменять её внутри лямбды, что не всегда удобно и может привести к ошибкам.

Лучше использовать функции высшего порядка, например, sumOf, которая сразу суммирует значения по заданному критерию:

val map = mapOf("a" to 10, "b" to 20, "c" to 30)
val sum = map.values.sum() // или map.sumOf { it.value }
println(sum) // 60

Если же использовать forEach, то пример будет таким:

var sum = 0
map.forEach { (_, value) ->
    sum += value
}
println(sum)

Но предпочтительнее использовать sumOf или sum для чистоты и читаемости кода.