Я использую функцию buildSequence
в Kotlin.Как мне закончить итерацию в середине функции?Я ищу что-то похожее на оператор C # yield break
.
Мой код выглядит примерно так:Я застрял на TODO
.
fun foo(list:List<Number>): Sequence<Number> = buildSequence {
if (someCondition) {
// TODO: Bail out early with an empty sequence
// return doesn't seem to work....
}
list.forEach {
yield(someProcessing(it))
}
}
РЕДАКТИРОВАТЬ
Видимо, я неправильно диагностировал источник.Проблема не возвращается из функции buildSequence
.Следующее работает для меня:
fun foo(list:List<Number>): Sequence<Number> = buildSequence {
return@buildSequence
list.forEach {
yield(someProcessing(it))
}
}
РЕДАКТИРОВАТЬ 2
Проблема заключается в том, что я поместил return
в локальную вспомогательную функцию, которая проверяет данные в нескольких точкахв buildSequence
(отсюда и вспомогательная функция).По-видимому, я не могу вернуться с buildSequence
в рамках вспомогательной функции.Сообщение об ошибке не очень помогло ...