我有一台状态机,其中
S1 ---> inp X,保护条件= Y ----> S1(执行后自行转换到S1,action1()
S1 ---> inp X,保护条件=!Y ----> S1(执行后自转移S1,动作2()
因此,两个输入之间的唯一区别是它正在执行不同的操作,
我觉得这里有问题,我应该做些不同的事吗?
答案 0 :(得分:1)
您不能在同一状态下拥有两个备用录入操作。整点是国家独立于你到达的路线。您有两种选择:
action1()
& action2()
。状态S1将具有两个退出的转换,一个到每个新状态。转换1将标记为X[Y]
并导致包含action1()
的状态。类似于action2()
。每个新状态都会转换回S1,并在动作完成后立即执行。如果图表是概念性的,那么您选择的主要是风格。如果您直接翻译代码,那么您需要考虑语义。选项(1)在视觉上更简洁,但这意味着过渡不会是“瞬时的”。对于某些环境 - 特别是实时/嵌入 - 可能很重要。
第h