При работе Kotlin последовательностей с функциональными API, такими как map
, flatMap
, +
и т. Д. c., Кэшируются ли промежуточные результаты вычислений, так что при повторной оценке нет повторного вычисления?
Если нет, то замена List
s на Sequence
s может в некоторых ситуациях приводить к экспоненциальному увеличению сложности, и слово "lazy", используемое в официальных документах , кажется недостаточно точным, чтобы различать guish два поведения.
Другими словами, по сравнению с Scala, они Kotlin Sequence
s больше похожи на Scala Stream
s / LazyList
s (где "Once" вычисляется, значение остается вычисленным и используется повторно. Или, как вы говорите, значения кэшируются. ") или View
s (где" все преобразования повторно применяются каждый раз, когда вам нужно извлечь из него элементы ")? (цитируемое содержание от В чем разница между представлением, потоком и итератором? | FAQ | Scala Документация )