程序开发中,通过位运算,使得一个变量可以存储多种状态

程序开发中,通过位运算,使得一个变量可以存储多种状态

在程序开发中,通常有各种各样的状态,如果每一种状态都用一个变量去存储,在某些场合就不合适,例如游戏开发中需要对一个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 存储多种状态,非常使用,在其他程序开发中,这种方式也很常见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值