Jeff Davis wrote:
The only difference is that in the second case the block is anonymous.
In the first case, it has a name and so you can pass it around if you
want (e.g. recursively).That brings up another question: how do you call a function that accepts
a block if all you have is a proc object?
Prepend the Proc with a &:
def foo()
yield
end
bar = proc { puts 'foo' }
foo bar # Fails
foo &bar # 'foo'
i.e. what's the difference between the following:
def foo(&p) p.call; end
foo { puts 'foo' }
and:
def foo(&p) p.call; end
p = proc { puts 'foo' }
foo { p.call }Are those the same? Is the latter the proper way to pass a proc object
as a block?
See above
Thanks to all for your help. I'm just getting into Ruby and I really
like it so far (coming from Python/Perl/PHP).Regards,
Jeff Davis
E