Как вы выполняете логические операции над всеми элементами массива и смешиваете результат вместе? - PullRequest
6 голосов
/ 20 марта 2012

Я хочу AND или OR всех элементов в массиве, но с некоторым контролем, как показано с помощью выбора элемента хеша. Вот то поведение, которого я хочу достичь:

a = [{:a => true}­, {:a => false­}]
a.and_map{ |hash_element| hash_element[:a] }
#=> false
a.or_map{ |hash_element| hash_element[:a] }
#=> true

Есть ли отличный способ сделать это в Ruby?

Ответы [ 2 ]

17 голосов
/ 20 марта 2012

Вы можете использовать all? и any? для этого:

a = [{:a => true}, {:a => false }]
a.any? { |hash_element| hash_element[:a] }
#=> true
a.all? { |hash_element| hash_element[:a] }
#=> false
3 голосов
/ 20 марта 2012
a = [{:a => true}­, {:a => false­}]
a.all?{ |elem| elem[:a] }
a.any?{ |elem| elem[:a] }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...