Ruby Inte和整数值的评估

Pla*_*rob 0 ruby if-statement

在某些情况下,我发现自己需要在一些ruby脚本中编写一个相当冗长的if语句.

声明看起来像这样:

if long_var_name == 0 && very_different_name == 0 && other_third_var == 0 && additional_variable == 0 && name_five == 0 && longest_variable_name_six == 0
  # (possibly even more conditions) 
  # do stuff here...
end
Run Code Online (Sandbox Code Playgroud)

似乎必须有一种更优雅的方式来做到这一点.

问题是,if并且and用谷歌作为基本的英语单词进行研究并不容易.所以我空手而归.

有没有人知道缩短这种情况的方法?当你有更多的东西时,它可能成为一个噩梦.

  • 有时变量重命名不是一种选择.
  • 这些名字有时会大不相同.

注意:我找到了一个针对OR类似情况的聪明解决方案:

用于字符串值的Ruby多重OR评估

Mat*_*att 6

如果你有一个数组并且专门测试为零,你可以这样做:

vars1 = [0,0,3,0,0]
vars2 = [0,0,0,0,0]

vars1.all?(&:zero?) # false
vars2.all?(&:zero?) # true
Run Code Online (Sandbox Code Playgroud)

编辑:基于OP增加的条件,为值赋予不同的名称:

if [long_var_name_1,long_var_name_2,long_var_name_3].all?(&:zero?)
  # do stuff here...
end
Run Code Online (Sandbox Code Playgroud)