loop
inline suspend fun <S : Stage<S>> StageLoop<S>.loop(crossinline condition: (next: S?) -> Boolean = { next -> next != null }, crossinline exceptionHandle: (Throwable) -> Unit = { e ->
throw e
})(source)
通过提供的 StageLoop 进行循环。
Parameters
condition
每次循环时的条件判断。默认为 next != null
。 可以配合其他条件实现声明周期控制,例如 Job
val job: Job = ...
stageLoop.loop(condition = { next -> job.isActive && next != null })
Content copied to clipboard
exceptionHandle
每个阶段循环到并执行时的异常处理器
inline suspend fun <S : State<S>> S.loop(onEach: (S) -> Boolean = { true }, onNext: (S?) -> S? = { it }): S(source)
通过指定的 State 开启状态循环并直到状态消失。
Return
当循环结束时的最后一个有效状态,如果没有任何新的状态产生则得到 receiver 自身。
Author
ForteScarlet
Parameters
onEach
每一次循环的状态控制,如果手动中断则 loop 的返回值即为此函数用于判断的参数值。
var state = ...
while(onEach(state)) {
...
}
return state
Content copied to clipboard
默认永远为 true
。
onNext
对中间每一次的新状态拦截处理,默认返回被拦截的结果自身。