oaklodge
oaklodge

Reputation: 748

Ruby - test each array element, get one result

I want a one-liner to return true/false, that tests each element in an array for whether it's an Integer or not. So if any element in the array is not an Integer, it should return false, else true. Here's my try:

>> ([2,1,4].map {|x| (x.is_a? Integer)}).reduce {|x, result| x and result}
=> true
>> ([2,"a",4].map {|x| (x.is_a? Integer)}).reduce {|x, result| x and result}
=> false

Any other ideas to distill it down further?

Upvotes: 11

Views: 3415

Answers (2)

Nakilon
Nakilon

Reputation: 35102

array.all?{ |x| x.is_a? Integer }

Upvotes: 19

Jörg W Mittag
Jörg W Mittag

Reputation: 369584

ary.all?(&Integer.method(:===))

Upvotes: 4

Related Questions