Kotlin функция sumBy с условием - PullRequest
0 голосов
/ 03 марта 2020

Вместо использования ifs и циклов я хотел бы использовать функцию sumBy и дать ей выражение. Где добавить условие?

val counter = list.sumBy {it.amount}

, где сумма - это поле из списка.

Где добавить, например, if(it.flag == true) оператор?

Или просто использовать потоки?

Ответы [ 2 ]

5 голосов
/ 03 марта 2020
val counter = list.sumBy { if (it.flag) it.amount else 0 }

или

val counter = list.asSequence().filter { it.flag }.sumBy { it.amount }

asSequence() для использования sequence для предотвращения создания промежуточного сбора в функции фильтра

0 голосов
/ 03 марта 2020

Если у вас есть массив по имени «количество» в списке, то сумма элементов будет произведена этим методом.

 val amount= listOf(10, 20, 30)
    println(amount.sumBy { it })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...