我正在使用状态机,当测试大量可能的状态时,代码变得非常冗长。
enum Mood {
HAPPY, SAD, CALM, SLEEPY, OPTIMISTIC, PENSIVE, ENERGETIC;
}
有没有办法做到这一点:
if (currentMood == (HAPPY | OPTIMISTIC | ENERGETIC) {}
不要这样写:
if (currentMood == HAPPY || currentMood == OPTIMISTIC || currentMood == ENERGETIC) {}
在这种情况下,使用整数和标志是否更好?
if ((currentMood & (HAPPY | OPTIMISTIC | ENERGETIC)) != 0) {}
。或者也许是if (((1<<currentMood) & ((1<<HAPPY) | (1<<OPTIMISTIC) | (1<<ENERGETIC))) != 0) {}
。猜测我很高兴你想要正确做好这件事。 - Tom Hawtin - tackline