所以我有一些代碼如下所示:初始化一個多層次的散列軌
@foo ||= {}
@foo[:bar] ||= {}
@foo[:bar][:baz] ||= {}
我不是關於性能,但清潔。有沒有更美麗的方式或更好的方式來做到這一點?
所以我有一些代碼如下所示:初始化一個多層次的散列軌
@foo ||= {}
@foo[:bar] ||= {}
@foo[:bar][:baz] ||= {}
我不是關於性能,但清潔。有沒有更美麗的方式或更好的方式來做到這一點?
{:bar => {:baz => {}}}.merge(@foo)
我認爲你擁有的是編寫代碼的好方法,但下面是我認爲要做同樣事情的另一種方式。它還是會做的工作,如果你願意更詳細:
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 [email protected]
@foo = { :bar => { :baz => {} } }
else if [email protected][:bar]
@foo[:bar] = { :baz => {} }
else if [email protected][:bar][:baz]
@foo[:bar][:baz] = {}
end
感謝您的建議,但我寧願希望有一個更簡單的方法做它...... – PeterWong 2011-03-21 03:47:42
它的工作原理!謝謝 – PeterWong 2011-03-21 04:00:45