在红宝石中,我可以写
a == b || a == c
如果b
或c
等于a
,则会返回true。
但是当我想针对a
a == b || a == c || a == d || a == e || a == f
有没有一种漂亮的方法可以做到这一点?
像这样的东西
a ==|| [b,c,d,e,f]
代表OR
和
a ==&& [b,c,d,e,f]
AND
会很棒。
答案 0 :(得分:6)
答案 1 :(得分:3)
这应该这样做:
[b,c,d,e,f].include? a
AND
味道意味着所有变量应该彼此相等,所以我想这会起作用:
[a,b,c,d,e,f].uniq.size == 1
答案 2 :(得分:3)
我的偏好是使用case
语句,因为我觉得它最好:
case a
when b,c,d,e,f
..do something..
else
..do something else..
end
您也可以使用类似集合的操作。
arr = [b,c,d,e,f]
确定a
是否等于arr
的任何元素:
(arr & [a]).any?
确定arr
的所有元素是否等于a
:
(arr - [a]).empty?
最后(因为使用uniq
- 显而易见的解决方案 - 已被建议),这是一种有趣的方法,可以检查它们是否完全相同(当<=>
定义时):
arr = [a,b,c,d,e,f]
arr.min == arr.max