3

我正在定义一个状态机,并希望在创建对象时让机器“运行”。考虑到这一点,我忽略了所有转换的触发器(并且只定义了守卫)。如果没有进一步触发,创建的对象似乎保持在第一个状态?如何避免必须显式调用触发器?如果我确实执行了一个触发器,那么所有后续状态都由那个(一个)触发器调用传递吗?第一个状态有什么“特别”吗?

4

1 回答 1

3

第一种状态的特殊之处在于不需要触发器。从开始状态的转换在对象创建时执行。

要模仿您正在寻找的行为,您可以在所有其他转换上使用相同的触发方法。这些转换受到保护,因此一次只有 1 个转换有效。但是您需要实际执行这个单一的触发器才能使任何事情发生。

在此处输入图像描述

您现在可以检查是否可以触发,如果可以通过以下伪代码触发:if self.trigger? 然后 self.trigger

于 2018-03-24T11:20:42.047 回答