У меня есть алгоритм с отслеживанием состояния, который постепенно принимает ввод и постепенно производит вывод. Входы и выходы не связаны по количеству; т. е. вход может производить ноль или более выходов.
Я пытаюсь превратить его в Enumeratee
в Play Framework, но я испытывает трудности с началом работы.
Мой алгоритм имеет локальное изменяемое состояние и синхронные операции и выглядит примерно так
var state = 'foo
var i = input()
while (i != null) {
if (state == 'foo && i >= 0) {
// 2 outputs, and change state
output(i - 2)
output(i * 3)
state = 'bar
} else if (state == 'foo) {
// error
error("expected >= 0")
} else if (state == 'bar) {
// 0 outputs, and change state
state = 'foo
}
... // etc
i = input()
}
if (state != 'bar) {
error("unexpected end")
}
Я изучил реализации map
, filter
и т. д. в Enumeratee.scala
, и я вроде как их понимаю. Но мне трудно понять, как написать собственную реализацию чего-то более сложного.
Не могли бы вы описать/показать, как я могу преобразовать этот алгоритм в Enumeratee
?