Joel VanderWerf
4/9/2007 6:07:00 PM
botp wrote:
> i prefer to refer to blocks as just mere codes that cannot stand on
> their own yet. They have to be proc-ified or lamba-fied or yielded as
> code blocks in methods.
You are right. Blocks are not even objects, just syntactical constructs
which can potentially be associated with an object using Proc.new,
#proc, #lambda, or the & notation. Yielding to a block doesn't cause any
such object to be instantiated.
There is a small performance cost to this instantiation, so in general I
try to write methods like this:
def foo; ... yield(something) ...; end
rather than
def foo(&bl); ... bl.call(something); end
Sometimes, though, you really need to instantiate a block and store it
somewhere so it persists between method calls.
Another advantage of yield is that RDoc can automatically recognize it
and document it.
--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407