Marcin Mielzynski
7/5/2006 8:35:00 PM
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