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
endThis 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