Blah Blah Blah

Dynamic programming using closures in Ruby

Posted in technology by Pavan on April 4, 2008

I was playing around with ruby and proc blocks caught my fancy. Here’s the code snippet (not a perfect algorithm, but shows the use of closures)

def getAngleChecker(start_angle, end_angle)
  return Proc.new { |angle| (start_angle <= angle  && angle < end_angle) }
end

acuteAngleChecker = getAngleChecker(0, 90)
rightAngleChecker = getAngleChecker(90, 91)
obtuseAngleChecker = getAngleChecker(91, 180)

puts acuteAngleChecker.call(12)      #true
puts acuteAngleChecker.call(90)      #false
puts rightAngleChecker.call(90)      #true
puts obtuseAngleChecker.call(112)    #true

For some one looking for more info on closures, following resources may be useful:

http://martinfowler.com/bliki/Closure.html

http://blog.codahale.com/2005/11/24/a-ruby-howto-writing-a-method-that-uses-code-blocks/


Leave a Reply