Jason  Vogel wrote:

> Okay, I have a couple of questions. If I use the Hash approach,
> 
> - How do I handle argument default values?

Initially:

@hash = { key => arg, key => arg, ... }

Then:

@hash[key] = arg # from initializer arguments

> - How do I handle required vs. optional arguments?

Please explain. Ordinarily if a required argument is not provided, the call
fails:

... wrong number of arguments (0 for 1) (ArgumentError)

> - Provide some sort of clue to the calling routines what the argument
> "names" are?

Is this still a constructor for a class?

Perhaps it would be better, rather than asking a lot of hypothetical
questions, for you to say what you are trying to accomplish with your code.

> - Is there a way to enumerate the valid choices for values (e.g. colors
> = [red,white,blue])

Yes, but it is a bit involved.

-- 
Paul Lutus
http://www.arachnoid.com