Если у вас есть определенное состояние X
и метод def isDone(x: D): Boolean
, который определяет, что «время истекло», вы можете сделать что-то вроде этого:
when(X) (({
case Event(...) => ...
...
}: StateFunction) andThen {
case State(_, data, _, _, _) if isDone(data) => // return new state
case x => x
})
К сожалению, приписывание типа необходимо, и andThen принимает полную функцию1, делая ее более многословной, чем мне бы хотелось. Я вижу, что это полезно, буду думать о том, как сделать это проще.