在rails中初始化多级哈希

时间:2011-03-21 03:10:47

标签: ruby-on-rails variable-initialization

所以我有一些代码如下所示:

@foo ||= {}
@foo[:bar] ||= {}
@foo[:bar][:baz] ||= {}

我不是关于表现,而是清洁。有更好的方式或更好的方法吗?

2 个答案:

答案 0 :(得分:1)

{:bar => {:baz => {}}}.merge(@foo)

答案 1 :(得分:0)

我认为你所拥有的是一种编写代码的简洁方法,但下面是我想做同样事情的另一种方式。如果你想更加冗长,它仍然可以完成这项任务:

if @foo.nil?
    @foo = { :bar => { :baz => {} } }
else if @foo[:bar].nil?
    @foo[:bar] = { :baz => {} }
else if @foo[:bar][:baz].nil?
    @foo[:bar][:baz] = {}
end

if !@foo
    @foo = { :bar => { :baz => {} } }
else if !@foo[:bar]
    @foo[:bar] = { :baz => {} }
else if !@foo[:bar][:baz]
    @foo[:bar][:baz] = {}
end