Функция sumOf

Функция sumOf вычисляет сумму результатов применения заданной функции-преобразователя к каждому элементу коллекции. Работает с различными типами коллекций: Array, List, Set, Map и другими. Возвращает сумму в числовом типе, соответствующем результату работы функции-преобразователя.

Импорт

kotlinimport kotlin.collections.sumOf

Синтаксис

kotlin// Для Int результатов
inline fun <T> Array<out T>.sumOf(selector: (T) -> Int): Int
inline fun <T> Iterable<T>.sumOf(selector: (T) -> Int): Int
kotlin// Для Long результатов
inline fun <T> Array<out T>.sumOf(selector: (T) -> Long): Long
inline fun <T> Iterable<T>.sumOf(selector: (T) -> Long): Long
kotlin// Для Double результатов
inline fun <T> Array<out T>.sumOf(selector: (T) -> Double): Double
inline fun <T> Iterable<T>.sumOf(selector: (T) -> Double): Double
kotlin// Для Float результатов
inline fun <T> Array<out T>.sumOf(selector: (T) -> Float): Float
inline fun <T> Iterable<T>.sumOf(selector: (T) -> Float): Float

Пример

Вычислим сумму длин строк в списке:

kotlinval strings = listOf("abc", "de", "fghij")
val res: Int = strings.sumOf { it.length }
println(res)

Результат выполнения кода:

kotlinInt 10

Пример

Вычислим сумму квадратов чисел в массиве:

kotlinval numbers = arrayOf(1, 2, 3, 4, 5)
val res: Int = numbers.sumOf { it * it }
println(res)

Результат выполнения кода:

kotlinInt 55

Пример

Вычислим сумму значений в Map:

kotlinval map = mapOf("a" to 10, "b" to 20, "c" to 30)
val res: Int = map.sumOf { it.value }
println(res)

Результат выполнения кода:

kotlinInt 60

Пример

Вычислим сумму с преобразованием в Double:

kotlinval prices = listOf(10.5, 20.3, 15.7)
val res: Double = prices.sumOf { it * 1.2 } // Добавляем налог 20%
println(res)

Результат выполнения кода:

kotlinDouble 55.8

Поддерживаемые типы коллекций

Функция sumOf работает со следующими типами коллекций:

Смотрите также

  • функцию sum,
    которая вычисляет сумму элементов числовой коллекции
  • функцию average,
    которая вычисляет среднее значение элементов коллекции
  • функцию fold,
    которая выполняет свертку коллекции с начальным значением
  • функцию reduce,
    которая выполняет свертку коллекции без начального значения