Proc#=== allows you to do this:
def multiple_of( n )
lambda{ |x| x.modulo( n ).zero? }
end
case 10
when multiple_of( 3 ):
puts "3!"
when multiple_of( 4 ):
puts "4!"
when multiple_of( 2 ):
puts "2!"
end
Basically you can now run code when checking case equality (===).