From: Corey Date: 2005-06-11T10:55:44+09:00 Subject: blocks, scope/context confusion I'm reading pages 358 & 359 in the pickaxe2 and having a tough time wrapping my mind around what exactly is going on. I've got a few simple questions that I'm hoping will help clarify my confusion. What's the difference between the two methods below? def meth1 yield end def meth2(&b) b.call end What's the difference between the next two blocks? Does 'next' in any way make any sort of functional or subtle difference? blk = meth1 { 99 } puts blk blk = meth1 { next 99 } puts blk and... Why does the following cause an exception? meth { return 99 } As far as the above goes, I'm really struggling to understand how the scope and context works. "A return from a block whose original context is not longer valid raises an exception ( LocalJumpError )." In the following: meth { return 99 } _Where_/_What_ exactly _is_ the "original context", and how exactly does it become "no longer valid" with the 'return' statement? I've got some other questions, but I'm hoping that the above will help make some things 'click' for me. Many thanks!