Функция sumOf
Функция sumOf вычисляет сумму результатов применения заданной функции-преобразователя
к каждому элементу коллекции. Работает с различными типами коллекций: Array, List,
Set, Map и другими. Возвращает сумму в числовом типе, соответствующем
результату работы функции-преобразователя.
Импорт
import kotlin.collections.sumOf
Синтаксис
// Для Int результатов
inline fun <T> Array<out T>.sumOf(selector: (T) -> Int): Int
inline fun <T> Iterable<T>.sumOf(selector: (T) -> Int): Int
// Для Long результатов
inline fun <T> Array<out T>.sumOf(selector: (T) -> Long): Long
inline fun <T> Iterable<T>.sumOf(selector: (T) -> Long): Long
// Для Double результатов
inline fun <T> Array<out T>.sumOf(selector: (T) -> Double): Double
inline fun <T> Iterable<T>.sumOf(selector: (T) -> Double): Double
// Для Float результатов
inline fun <T> Array<out T>.sumOf(selector: (T) -> Float): Float
inline fun <T> Iterable<T>.sumOf(selector: (T) -> Float): Float
Пример
Вычислим сумму длин строк в списке:
val strings = listOf("abc", "de", "fghij")
val res: Int = strings.sumOf { it.length }
println(res)
Результат выполнения кода:
Int 10
Пример
Вычислим сумму квадратов чисел в массиве:
val numbers = arrayOf(1, 2, 3, 4, 5)
val res: Int = numbers.sumOf { it * it }
println(res)
Результат выполнения кода:
Int 55
Пример
Вычислим сумму значений в Map:
val map = mapOf("a" to 10, "b" to 20, "c" to 30)
val res: Int = map.sumOf { it.value }
println(res)
Результат выполнения кода:
Int 60
Пример
Вычислим сумму с преобразованием в Double:
val prices = listOf(10.5, 20.3, 15.7)
val res: Double = prices.sumOf { it * 1.2 } // Добавляем налог 20%
println(res)
Результат выполнения кода:
Double 55.8
Поддерживаемые типы коллекций
Функция sumOf работает со следующими типами коллекций:
Array- массивы любых типовList- списки (List,MutableList)Set- множества (Set,MutableSet)Map- словари (Map,MutableMap)Iterable- любые итерируемые коллекцииSequence- последовательности