状态的多个“何时”条件



假设我有以下状态:

State
{
    name: "red_state"
    when: color === "red"
},
State
{
    name: "blue_state"
    when: color === "blue"
},
State
{
    name: "square_state"
    when: shape === "square"
},
State
{
    name: "circle_state"
    when: shape === "circle"
},
State
{
   name: "blue_circle_state"
   when: color === "blue" && shape === "circle"
}

"blue_circle_state"从未被触发,这是为什么?有没有更好的办法为一个国家提供若干条件?

在一个when中对一个State有多个条件并没有错,这里的问题是让blue_statecircle_stateblue_circle_state同时评估为 true。关于一国财产的文件说:

如果组中的多个状态具有同时计算结果为 true 的 when 子句,则将应用第一个匹配状态。

因此,当颜色为蓝色且形状为圆形时,这里只有blue_state处于活动状态。

在您的情况下,在开始时移动更具体的blue_circle_state将解决您的问题,但您仍然不能同时激活多个状态。

如果你想要一个更高级的状态机,你可以看看声明性状态机框架。

相关内容

  • 没有找到相关文章

最新更新