Intereting Posts

Kotlin уменьшает функцию для 2d-списка, не работающего

Мне нужно получить общий размер 2-го списка. Это моя реализация:

fun totalSize(parts: List<List<String>>): Int { return parts.reduce { total, next -> total + next.size } } 

Я получаю ошибку ввода типа. Требуемый Int, Got List. Но next.size должен возвращать Int.

Solutions Collecting From Web of "Kotlin уменьшает функцию для 2d-списка, не работающего"

Лучше: операция карты во время суммы (из комментария @Ruckus T-Boom)

 parts.sumBy { it.size } 

Original: сначала сопоставьте внутренние списки с их размерами (угадывая синтаксис Kotlin):

 parts.map { l -> l.size }.reduce { total, i -> total + i } 

В reduce первое значение для total – это первый элемент списка, который также является списком. Таким образом, выводимый тип возвращаемого значения reduce должен быть List .

Вместо этого вы можете использовать fold :

 return parts.fold(0, { total, next -> total + next.size })