addAll
возвращает boolean
, но возвращаемое значение операции fold
должно быть того же типа, что и данный исходный объект (в данном случае ArrayList
).Вы можете легко решить эту проблему, просто добавив result
после вашего addAll
заявления, например:
result.addAll(schedule.events)
result // this is now the actual return value of the fold-operation
В качестве альтернативы просто используйте apply
или аналогичный:
result.apply {
addAll(schedule.events)
} // result is the return value then
Обратите внимание, что вы можете вообще упростить, используя flatMap
до всего (примечание: если вы используете этот подход, matches
оцениваются только один раз, но flatMap
звезда в любом случае здесь; -))):
val matches = timeSlots.flatMap { it.events } // this is a new list! (note, if you do several mappings in a row, you may want to use timeSlots.asSequence().flatMap { }.map { }.toList() / or .toMutableList() instead
В качестве альтернативы, если вам действительно нужно, чтобы matches
был типа ArrayList
, используйте flatMapTo
вместо:
val matches = timeSlots.flatMapTo(ArrayList()) { it.events }
Вы, конечно, можете оставить get()
, если необходимо, или просто перенести получение совпадений на свою собственную функцию, например:
fun getMatches() = timeSlots.flatMapTo(ArrayList()) { it.events }