State
一个单向流转可挂起的 "状态机" 。
状态 State 是一个简易且状态单一单向的 "状态机" 。 与 StageLoop 类似,但是与其不同的是 State 没有外置的循环器, 也没有内置的队列,仅使用其本身循环。
建议通过抽象或密封类提供类型约束并参考如下使用:
sealed class MyState : State<MyState>() {
/** 一个用于启动状态循环的状态 */
object Start : MyState() {
override suspend fun invoke(): MyState = Process(0)
}
/** 中间的处理状态,可以直接隐藏 */
private data class Process(val value: Int) : MyState() {
override suspend fun invoke(): MyState? {
return if (value < 10) Process(value + 1) else End
}
}
/** 最后一个状态,会被 `State.loop()` 返回 */
data class End(val value: Int): MyState() {
override suspend fun invoke(): MyState? = null
}
}
val myState: MyState = ...
val lastState = myState.loop() // 开始循环直到结束
Content copied to clipboard
Author
ForteScarlet