不,如果没有其中一个是默认子状态,您就不能拥有子状态。这不是状态图的限制,而是一般状态机概念的一部分。想象一下,您转换到Action
,根据定义,还必须输入其中一个子状态,并且 SM 必须知道要输入哪个。
如果没有逻辑默认值并且您总是显式转换到叶状态,那么实际上不需要默认值,但状态图仍然需要默认值。您始终可以创建默认的无操作第三子状态。如果您从不过渡到Active
而是始终过渡到state_1
或state_2
直接过渡到,那么无论如何您的虚拟默认状态都会被优化掉,所以这是一个很好的解决方法。