2012-03-20 28 views
5

Tôi muốn AND hoặc OR tất cả các phần tử trong một mảng, nhưng với một số điều khiển, như được hiển thị thông qua lựa chọn phần tử băm. Đây là hành vi mà tôi muốn đạt được:Làm cách nào để bạn thực hiện các phép toán boolean trên tất cả các phần tử của một mảng và kết hợp kết quả với nhau?

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

Có cách nào gọn gàng, gọn gàng để làm điều này trong Ruby không?

Trả lời

16

Bạn có thể sử dụng all?any? cho rằng:

a = [{:a => true}, {:a => false }] 
a.any? { |hash_element| hash_element[:a] } 
#=> true 
a.all? { |hash_element| hash_element[:a] } 
#=> false 
3
a = [{:a => true}­, {:a => false­}] 
a.all?{ |elem| elem[:a] } 
a.any?{ |elem| elem[:a] } 
Các vấn đề liên quan