最常用的方法是在ruby中编写elsif测试

时间:2014-09-18 19:25:07

标签: ruby

我的条件是这样的:

if some_variable == 'some_string'
  perform_action()
elsif !(some_boolean)
  perform_different_action()
end

将elsif写成:

更好吗?
elsif some_boolean == false

从我所读到的最喜欢的除非if!(value),所以我想知道使用' == false'是否更加惯用。对于elsif陈述。

提前谢谢。

3 个答案:

答案 0 :(得分:4)

我会说你的第一个例子更具惯用性。 您可以删除括号以使其更加 ruby​​esque

if some_variable == 'some_string'
  perform_action
elsif !some_boolean
  perform_different_action
end

some_boolean == false在语法上是正确的,但是无用的冗长。

unless很常见,但是后跟else会让人感到困惑。此外,没有elseunless这样的关键字,只有elsif

答案 1 :(得分:1)

这会适合您的口味吗?

if some_variable == 'some_string'
  perform_action()
else
  perform_different_action() unless some_boolean
end

对于那些不喜欢嵌入式使用unless的人,我认为我会使用Ruby的显式not来强调布尔值的否定,这是很难忽视的:

if some_variable == 'some_string'
  perform_action()
elsif not some_boolean
  perform_different_action()
end

我不喜欢对布尔值使用平等或不平等检查,例如some_boolean == false

答案 2 :(得分:1)

如果你正在寻找if / elsif的替代品,我想在混合中添加另一种选择......

perform_action_if_this(some_variable) || 
  perform_different_action_unless_that(some_boolean)

然后,在每个方法的开头,除非满足适当的条件,否则返回false。

如果您只是询问是elsif x == false还是elsif !x,我会说elsif !x更好。

elsif !(x)的括号不是必需的。

另外,请记住它们不一样 - 如果x为零,它们会给出不同的结果。