# So in fact, there are no less than seven -- count 'em, SEVEN -- different closure-like constructs in Ruby: # # 1. block (implicitly passed, called with yield) # 2. block (&b => f(&b) => yield) # 3. block (&b => b.call) # 4. Proc.new # 5. proc # 6. lambda # 7. method # # Though they all look different, some of these are secretly identical, as we'll see shortly. # # We already know that (1) and (2) are not really closures -- and they are, in fact, exactly the same thing. # Numbers 3-7 all seem to be identical. Are they just different syntaxes for identical semantics?
Comments