'干掉我的Ruby语法

时间:2012-08-28 05:02:33

标签: ruby dry

我有一个重复的比较,我必须检查三个变量是否等于某个变量。为简单起见,我将创建一个场景来说明我遇到的问题。

if time == -1 and day_of_week == -1 and month == -1 

我想知道是否有一种简洁,逻辑等效的方法来实现同样的代码行而不重复。

现在我正在使用一种迂回的方式:

all_equal = true
[time_now, day_of_week, month].each { |value| all_equal = false if value != -1 }
if all_equal ....

哈,显然它已经超过了顶级(显然效率不高),但我发现重复的缺乏更令人满意。

你会建议一个更好的方法吗?

谢谢!

1 个答案:

答案 0 :(得分:6)

使用Enumerable#all?

if [time_now, day_of_week, month].all? { |value| value == -1 }
  # do something
end