结合Ruby中的逻辑运算符

时间:2013-11-24 15:19:31

标签: ruby logical-operators

我目前正在通过Ruby Koans工作,我面临的情况是我想要完成以下任务:

if ones > 2 || twos > 2 || threes > 2 || fours > 2 || fives > 2 || sixes > 2
    #do something
end

有没有更好的方法来编写这个if语句?

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:6)

使用Enumerable#any?执行以下操作:

if [ones,twos,threes,fours,fives,sixes].any?{|e| e > 2 }
   # do something
end

JörgWMittag 建议 -

if [ones,twos,threes,fours,fives,sixes].any?(&2.method(:<))
   # do something
end

答案 1 :(得分:4)

使用Enumerable#max

ones, twos, threes, fours, fives, sixes = 1, 2, 3, 4, 5, 6
[ones, twos, threes, fours, fives, sixes].max > 2
# => true
[ones, twos, threes, fours, fives, sixes].max > 6
# => false

如果使用Enumerable#any?条件更复杂,则更优选Arup Rakshit的答案。

答案 2 :(得分:1)

您还可以使用Enumerable#find

if [ones,twos,threes,fours,fives,sixes].find{|e| e > 2 }
   # do something
end

坦率地说,Enumerable#any?更好。