我的条件是这样的:
if some_variable == 'some_string'
perform_action()
elsif !(some_boolean)
perform_different_action()
end
将elsif写成:
更好吗?elsif some_boolean == false
从我所读到的最喜欢的除非if!(value),所以我想知道使用' == false'是否更加惯用。对于elsif陈述。
提前谢谢。
答案 0 :(得分:4)
我会说你的第一个例子更具惯用性。 您可以删除括号以使其更加 rubyesque 。
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为零,它们会给出不同的结果。