February 23, 2008

handy 'and' and 'or' in Ruby

Here's a nice shortcut to verify if any member of an array satisfies a predicate, or to verify if all members of an array satisfy the predicate.

#!/usr/bin/env ruby -w

module Enumerable
def any sym
each {|item| return true if item.send sym }
return false
end

def all sym
each {|item| return false if !item.send sym }
return true
end
end

puts [1, 2, 3, 0, nil].any(:nil?)
puts [1, 2, 3, 0].any(:nil?)
puts ["", "", ""].all(:empty?)
puts ["", "", "dsa"].all(:empty?)

Output:
true
false
true
false

0 comments: