Hi,

Blocks are actually objects of class Proc, so if you need to enforce
presence of block parameter then you can do something like this:

irb(main):001:0> p = Proc.new { puts 'block' }
=> #<Proc:0x02ba5b00@(irb):1>
irb(main):002:0> def method_with_mandatory_block(block)
irb(main):003:1>   block.call
irb(main):004:1> end
irb(main):005:0> method_with_mandatory_block p
block

--
Martins

On 3/20/06, dblack / wobblini.net <dblack / wobblini.net> wrote:
> Hi --
>
> On Tue, 21 Mar 2006, Shea Martin wrote:
>
> > Jeffrey Schwab wrote:
> >
> >> So...  You want an exception to be thrown, but you don't want to throw an
> >> exception?  Please show me what I've missed.  Are you saying that
> >> specifying the &p_block parameter should make the block mandatory
> >> automatically?
> >
> > I am not saying it *should*, but just curious why specifying a block, does
> > not make it mandatory (automatically)?  Specifying a normal parameter, makes
> > it mandatory (automatically.  It just seems odd that the two are treated
> > differently.  Just my $0.02.
>
> It's hard for me to answer, because I don't understand why one would
> assume, a priori, that they *should* be treated the same :-)  But in
> practice, the code-block facility works out better, I think, the way
> it is.  The method can easily branch on existence or non-existence of
> a block, and it's easy to write methods that can work with or without
> a block.  I guess I view the &block thing as a special concession to
> the possibility that one might want to handle the block as an object
> (rather than as a syntactic construct), but not the heart of the
> matter.
>
>
> David
>
> --
> David A. Black (dblack / wobblini.net)
> Ruby Power and Light, LLC (http://www.rubypowerandlight.com)
>
> "Ruby for Rails" chapters now available
> from Manning Early Access Program! http://www.manning.com/books/black
>
>