Reputation: 16011
So I have some codes look like the following:
@foo ||= {}
@foo[:bar] ||= {}
@foo[:bar][:baz] ||= {}
I am not concerning the performance, but the cleanness. Is there a more beautiful way or better way to do so?
Upvotes: 0
Views: 399
Reputation: 25592
I think what you have is a good, terse way of writing the code, but below is another way I thought of to do the same thing. It'll still do the job, if you'd prefer to be more verbose:
if @foo.nil?
@foo = { :bar => { :baz => {} } }
else if @foo[:bar].nil?
@foo[:bar] = { :baz => {} }
else if @foo[:bar][:baz].nil?
@foo[:bar][:baz] = {}
end
or
if !@foo
@foo = { :bar => { :baz => {} } }
else if !@foo[:bar]
@foo[:bar] = { :baz => {} }
else if !@foo[:bar][:baz]
@foo[:bar][:baz] = {}
end
Upvotes: 0