在`if`语句中的OR条件

时间:2018-02-08 21:04:08

标签: ruby

为什么

if name.eql? 'Name1' || name.eql? 'Name2'
  # doSomething
end

不允许使用Ruby?在Ruby中执行此操作的好习惯是什么?

3 个答案:

答案 0 :(得分:6)

  

在ruby中执行此操作的好习惯是什么?

括号方法调用以避免愚蠢的歧义。

if name.eql?('Name1') || name.eql?('Name2')

答案 1 :(得分:2)

您可以使用case-expression

case name
when 'Name1', 'Name2'
  # do something
when 'Name3'
  # do something else
else
  # if all else fails
end

答案 2 :(得分:1)

ruby​​为我们提供了省略括号的选项,并将责任委托给解释器。你所做的就是混淆了ruby解释器,因为你的括号不足是模棱两可的。也就是说,红宝石无法弄清楚你正在尝试做什么

如果我们指定每个parens

,可以通过多种方式查看
if(name.eql?('Name1') || name.eql?('Name2'))

if(name.eql?('Name1' || name.eql?('Name2'))

if(name.eql?('Name1')) || name.eql?('Name2')

一个好的做法是在开始变得含糊不清时指定parens。这意味着将它们放在方法论证上

if name.eql?('Name1') || name.eql?('Name2')