Я должен согласиться с человеком, который сделал «неправильное использование» комментария.
Весь смысл конечного автомата состоит в том, чтобы быть черным ящиком, в который закачиваются события и который вызывает определенные вещи, происходящие на основе этих событий (включая переходы состояний). Сами события вообще не должны зависеть от текущего состояния машины.
Я не могу представить одну ситуацию, в которой событие должно меняться в зависимости от текущего состояния (но не стесняйтесь просвещать меня, если оно у вас есть).
Событие будет всегда таким, какое оно есть. Если необходимо обрабатывать по-разному в зависимости от текущего состояния, это проблема для самого конечного автомата, а не для насоса событий.
Фактически, сама идея изменения события на основе текущего состояния бросает вызов инкапсуляции.
Лучшие автоматы имеют очень простую форму:
+------+
| | state
V | transitions
+---------------+ |
events --> | | --+
| state machine |
effects <-- | |
+---------------+
Другими словами, события каким-то образом закачиваются в него (независимо от состояния), и это имеет определенные последствия, основанные на его состоянии и событиях. И оно поддерживает свое собственное состояние.
С точки зрения обновления вашего вопроса, где вы хотели бы обрабатывать вывод по-разному в зависимости от того, было ли последнее чтение хорошим или формулу, основанную на предыдущих, я бы просто поместил это в раздел эффектов. Пусть конечный автомат выдает текущее значение плюс , указывающее, было ли оно от датчика или рассчитано.
Тогда ваш код, который обрабатывает эффекты, может делать что угодно с этой информацией. Это эффективно дает вам необходимую информацию и не нарушает природу черного ящика.