Paul Van Delst wrote:
> Hello,
> 
> The subject line may be confusing as I don't know the correct 
> terminology, so apologies in advance.
> 
> I'm want to be able to create objects, but I want the object creation to 
> only proceed if the values passed to the init method are in a valid 
> list. E.g.:
> 
> class MyObj
>   VALID_NAMES=['bananas','dog','water']
>   attr_reader :name, :value
>   def initialize(name,value)
>     i=VALID_NAMES.index(name)
>     if i then
>       @name,@value=name,value
>     else
>       @name,@value=nil
>     end
>   end
> end
> 
> This sorta does what I want, but looks clunky, ugly and quite 
> un-ruby-ish. Is there a better way (idiom?) to achieve this sort of 

just:

@name,@value=name,value if VALID_NAMES.index(name)

> thing? I.e. is there a way to make the init method not create even an 
> "empty" object (as happens above) based on the valid names list?
> 

any not initialized instance variable will return null, so just don't 
bother ;D

lopex