3

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

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 ....

哈,显然它非常过分(而且显然效率较低),但我发现缺乏重复更令人赏心悦目。

你会推荐一个更好的方法吗?

谢谢!

4

1 回答 1

6

使用Enumerable#all?

if [time_now, day_of_week, month].all? { |value| value == -1 }
  # do something
end
于 2012-08-28T05:06:46.070 回答