Project1

标题: 请问有关逻辑运算符的问题 [打印本页]

作者: invirgin    时间: 2015-11-28 16:14
标题: 请问有关逻辑运算符的问题
RUBY 代码复制
  1. b= 1
  2. a= 2
  3. (msgbox b)&&(msgbox a)


运行后 只显示1

RUBY 代码复制
  1. b= 1
  2. a= 2
  3. (msgbox b)||(msgbox a)


运行后 先显示1后显示2

我看了书&&表前后都是真是才显示,而||只要有一个是真 显示,
如题为啥我用&&只显示前面的,而||却显示2个呢
作者: 喵呜喵5    时间: 2015-11-28 16:24
因为 msgbox 返回值为 nil
作者: invirgin    时间: 2015-11-28 16:51
谢喵大 我还是不太明白 nil不是true 应该相当于false吧
那(msgbox b)&&(msgbox a)就相当于 false  && false
拿应该是什么都不显示啊?

文化程度不高,见笑了{:2_271:}
作者: cinderelmini    时间: 2015-11-28 16:58
我看了书&&表前后都是真是才显示,而||只要有一个是真 显示

这个要这样理解吧:
a = true
b = false

if a && b
txt = 3
else
txt = false
end
msgbox txt  =》 false

if a || b
txt = 3
else
txt = false
end
msgbox txt  =》 3
作者: invirgin    时间: 2015-11-28 17:14
谢谢 椎名YASHIRO
你写的我看懂了,看看这
  1. a= true
  2. b = false

  3. (msgbox a) && b
复制代码
运行显示false

我的理解是喵大说msgbox返回值是空,
那(msgbox a) && b就相当于 nil && false
总的式子是 false,应该什么都不显示啊?

呵呵


作者: 喵呜喵5    时间: 2015-11-28 17:23
本帖最后由 喵呜喵5 于 2015-11-28 17:27 编辑
invirgin 发表于 2015-11-28 17:14
谢谢 椎名YASHIRO
你写的我看懂了,看看这运行显示false


&&:
从左到右依次 执行 各个表达式,并判断表达式的返回值,若为 假 ,则 这个与判断必定为假,此时停止判断
||:
从左到右依次 执行 各个表达式,并判断表达式的返回值,若为 真 ,则这个 或判断必定为真,此时停止判断

如果你搞不懂的话,我建议你老老实实回去用 if 和 else
至于你说的不执行啥的,
你所谓的不执行意思是这个:
  1. b= 1
  2. a= 2
  3. if (nil && false)
  4.    p "hello world"
  5. end
复制代码
而你写的代码其实是这个:
  1. b= 1
  2. a= 2
  3. c1 =  msgbox b
  4. c2 =  msgbox a
  5. (c1)||(c2)
复制代码





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1