Ruby 1.9的Proc#===作为call的一个别名,所以函数对象可以作为case语句中的条件
def multiple_of(factor)
lambda{|num| num % factor == 0}
end
#or
#def multiple_of(factor)
# proc{|num| num % factor == 0}
#end
#
while number = gets.to_i
case number
when multiple_of(2)
puts "multiple of 2"
when multiple_of(3)
puts "multiple of 3"
when multiple_of(5)
puts "multiple of 5"
else
puts "#{number} is not multiple of 2,3,5"
end
end