我想测试从一种状态到另一种状态的过渡。我在这样的枚举中定义了状态:
enum FingerStatus {
FINGERS_UP,
MOVING,
FINGERS_STILL
};
我有一个“ currentState”和一个“ newState”变量。我知道枚举只是整数,如果它们是16位整数(我认为是整数),则可以将两个枚举表示为单个32位整数。
我觉得我应该能够按照
switch ({currentStatus, newFingerStatus}) {
case {FINGERS_STILL, MOVING}:
NSLog(@"fingers starting to move");
break;
case {MOVING, FINGERS_STILL}:
NSLog(@"fingers stopped moving");
break;
default:
break;
}
我意识到语法是错误的,但是我认为基本思想是正确的。还有另一种干净的方法吗?
最佳答案
如果可以保证您的枚举小于16位,则可以使用:
switch ((currentStatus<<16) + newFingerStatus) {
case (FINGERS_STILL<<16) + MOVING:
NSLog(@"fingers starting to move");
break;
case (MOVING<<16) + FINGERS_STILL:
NSLog(@"fingers stopped moving");
break;
default:
break;
}
关于c - 比较(目标)C中的枚举数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3847931/