说我有以下状态:
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”永远不会被触发,为什么会这样?是否有更好的方法为一个国家提供若干条件?
答案 0 :(得分:2)
在State
中为when
设置多个条件没有任何问题,此处的问题是blue_state
,circle_state
和blue_circle_state
都在评估在同一时间真实。
documentation about the when property of a State说:
如果组中的多个状态具有同时评估为true的when子句,则将应用第一个匹配状态。
因此,当颜色为蓝色且形状为圆形时,此处只有blue_state
处于活动状态。
在您的情况下,在开始时移动更具体的blue_circle_state
将解决您的问题,但您仍然无法同时激活多个州。
如果您想拥有更高级的状态机,可以查看The Declarative State Machine Framework。