我目前正在通过Ruby Koans工作,我面临的情况是我想要完成以下任务:
if ones > 2 || twos > 2 || threes > 2 || fours > 2 || fives > 2 || sixes > 2
#do something
end
有没有更好的方法来编写这个if语句?
非常感谢任何帮助。
答案 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)
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?
更好。