Posts

Showing posts from November, 2016

Ruby Proc & Lamda - A close look

One of the core concepts about Ruby that a programmer should remember is that blocks are not objects. It is possible to convert them into objects by wrapping them inside the “Proc” class instance. The “Proc” and “Lambda” classes are probably the most awesome aspects of Ruby and need to be used well in order to get the desired results. Not much of knowledge is available on how to use Procs and Lambdas and what the differences between both are. I’d like to take a stab at how we can differentiate between Procs and Lambdas with a couple of thoughts below. 1. Proc doesn’t check the parameters passed, but Lambda does > proc1 = Proc.new { |a, b| a + 5 } > proc1.call(2)      # call with only one parameter => 7                    # no error, unless the block uses the 2nd parameter    > lambda1 = lambda { |a, b| a + 5 } > lambda1.call(2) ArgumentError: wrong number of arguments (1 for 2) Proc will throw error only if the block uses the second param. >