Project1
标题:
请教这个"|="到底是神马意思!
[打印本页]
作者:
taeckle
时间:
2021-12-4 02:13
标题:
请教这个"|="到底是神马意思!
研究了半天也没弄明白,比如:
a = 3
b = 2
a |= b
p a
P出来的a
是3
但要是
a = 3
b = 4
a |= b
p a
P出来的a
却是7
尤其是在默认脚本Game_Battler_2中的第282行effective |= self.state?(i) (位于def states_minus(minus_state_set)),这里的
|=
到底是神马意思呢?
#--------------------------------------------------------------------------
# ● 状态变化 (-) 的使用
# minus_state_set : 状态变化 (-)
#--------------------------------------------------------------------------
def states_minus(minus_state_set)
# 清除有效标志
effective = false
# 循环 (解除状态)
for i in minus_state_set
# 如果这个状态被附加则设置有效标志
effective |= self.state?(i)
# 设置状态变化标志
@state_changed = true
# 解除状态
remove_state(i)
end
# 过程结束
return effective
end
复制代码
还请大家指点指点,多谢了!
作者:
Istrien
时间:
2021-12-4 02:57
这个是位运算符,计算之前把两个数写成二进制。
比如 a = 3 = 0011B,b = 2 = 0010B
那么 a | b 的结果是按位做或运算,如下
a 0 0 1 1
b 0 0 1 0
a|b 0 0 1 1
所以结果是 0011B = 3
同样的如果 a = 3 = 0011B,b = 4 = 0100B,那么算出来 a|b = 0111B = 7
你贴出来的这一段里面 effective 和方法 self.state? 返回的都是 T / F
对true / false 做运算时位或 | 和逻辑或 || 效果一样的
就等同于写 effective ||= self.state?(i)
作者:
miantouchi
时间:
2021-12-4 09:41
从菜刀大大那先学现卖下,|= 是叫做 位或
true |=true #=>true
true |=false #=>true
false | true #=>true
false | false #=>false
从这里得到只有这个符号左右两边都是false,结果才是false.
接下来再从你的代码入手
首先,这段代码初始effective = false
effective |= self.state?(i) 等价于 effective = effective | self.state?(i)
也就是 effective = false | self.state?(i)
从这可以看出来 self.state?(i) 如果是true 最终effective 就是true,
self.state?(i) 如果是false 最终effective 就是false,
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1