ruby布尔运算符或|| 差异
可能重复:
Ruby:||之间的区别 和’或’
在ruby中,不是’或’和’||’ 同一件事情? 我执行代码时会得到不同的结果。
line ="" if (line.start_with? "[" || line.strip.empty?) puts "yes" end line ="" if (line.start_with? "[" or line.strip.empty?) puts "yes" end
不,这两个运营商具有相同的效果,但优先级不同。
||
运算符具有非常高的优先级,因此它与先前的值非常紧密地绑定。 or
运算符的优先级非常低,因此它的绑定程度低于其他运算符。
拥有两个版本的原因正是一个具有高优先级而另一个具有低优先级,因为这很方便。
在第一种情况下,您使用了|| 由于其他答案的优先级很好,因此在声明中先于其他任何内容进行评估,使其更加清晰,添加了一些括号,您的第一个声明如下:
(line.start_with? ("[" || line.strip.empty?))
转换为
(line.start_with? ("["))
结果为假
另一方面,你的第二个陈述转化为
((line.start_with? "[") or line.strip.empty?)
转换为
(FALSE or TRUE)
结果是真的
这就是我每次调用函数时尝试使用括号的原因。 🙂
丹尼尔是对的,更清楚:
if (line.start_with?("[") || line.strip.empty?) puts "yes" end
会产生yes
- 为什么’rspec spec’比’bundle exec spec’运行得更快,使用的资源更少
- IRB历史不适用于Ruby 2.3.0
- SSL_connect返回= 1 errno = 0状态= SSLv3读取服务器证书B:证书validationMAC失败
- Ruby:没有救援的其他方面毫无用处
- 为什么我的ActiveRecord范围与`merge`返回一个数组?
- 加载RubyGems插件时出错,openssl.bundle(LoadError)
- Rails 3禁用会话cookie
- capistrano – NameError:未初始化的常量Net :: SSH :: KnownHosts :: SUPPORTED_TYPE
- 排序范围值