在 Rails 中初始化多级哈希

发布于 2024-10-25 09:15:41 字数 147 浏览 1 评论 0原文

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

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

我不关心性能,而是关心清洁度。有没有更漂亮的方式或者更好的方式来做到这一点?

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

北音执念 2024-11-01 09:15:41
{:bar => {:baz => {}}}.merge(@foo)
{:bar => {:baz => {}}}.merge(@foo)
吾家有女初长成 2024-11-01 09:15:41

我认为你所拥有的是一种编写代码的良好、简洁的方式,但下面是我想到的另一种方法来完成同样的事情。如果您希望更详细的话,它仍然可以完成这项工作:

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

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文