Для этого нет выделенной функции, но вы можете использовать уменьшение для этого. Но существует проблема. Поскольку элемент (в данном случае типа T
с S
в качестве верхней границы) должен быть подтипом аккумулятора (в данном случае типа S
),
inline fun <S, T : S> Iterable<T>.reduce(
operation: (acc: S, T) -> S
): S
, который в вашем примере это не так, было бы неплохо сначала сопоставить элементы MyData
со значением Double
:
val l = listOf(MyData(1.0), MyData(2.0), MyData(3.0))
.map { it.value }
.reduce { acc, ele -> acc * ele }
println(l) // 6.0
В качестве альтернативы вы можете изменить модель данных (как показано * 1014). * здесь ) но это не может быть хорошей идеей только для умножения всех значений, но это зависит от вашего варианта использования.