程序开发中,通过位运算,使得一个变量可以存储多种状态
在程序开发中,通常有各种各样的状态,如果每一种状态都用一个变量去存储,在某些场合就不合适,例如游戏开发中需要对一个UI对象进行可见性设置,会有各种各样的条件去隐藏或者显示该对象,此时,用位运算去存储多种状态,就是一种非常不错的选择,例如下述代码:
class HiddenReason:
REASON1 = 1 << 0
REASON2 = 1 << 1
REASON3 = 1 << 2
class Object:
def __init__(self):
self.state = 0
self.visible = True
def addHiddenReason(self, reason):
self.state |= reason
self.updatevisible()
def removeHiddenReason(self, reason):
self.state &= ~reason
self.updatevisible()
def updatevisible(self):
self.visible = not self.state
a = Object()
print(a.visible) # True
a.addHiddenReason(HiddenReason.REASON1)
print(a.visible) # False
a.addHiddenReason(HiddenReason.REASON2)
print(a.visible) # False
a.removeHiddenReason(HiddenReason.REASON1)
print(a.visible) # False
a.removeHiddenReason(HiddenReason.REASON2)
print(a.visible) # True
这段代码,就是以一个变量state 存储多种状态,非常使用,在其他程序开发中,这种方式也很常见!