Ответ
Да, можно создать extension-функцию для Map или других коллекций. Пример для Map:
fun <K, V> Map<K, V>.sumByPredicate(predicate: (Map.Entry<K, V>) -> Boolean): Double {
return this.entries
.filter(predicate)
.sumOf { it.value.toString().toDoubleOrNull() ?: 0.0 }
}
// Использование:
val map = mapOf("a" to "1.5", "b" to "2", "c" to "invalid")
val sum = map.sumByPredicate { it.key != "c" } // вернет 3.5
Нюансы:
- Обработка нечисловых значений (используем toDoubleOrNull)
- Возможность фильтрации по ключу/значению/всей паре
- Возвращаемый тип Double для работы с дробными числами