创建一个哈希值,其中所有嵌套值均默认为哈希值

时间:2018-07-04 17:04:39

标签: ruby hash

因此,在Ruby中,要使用另一个哈希作为默认值来创建一个哈希,可以使用:

        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

然后您可以深入两个层次:

Hash.new { |h, k| h[k] = {} }

如所期望的,哪个允许产生以下行为:

x = Hash.new { |h, k| h[k] = Hash.new { |h, k| h[k] = {} } }

我的问题是,是否有一种方法可以创建一个默认值为总是总是另一个哈希的哈希值。基本上,这相当于写下面*无穷大的东西:

x = Hash.new { |h, k| h[k] = Hash.new { |h, k| h[k] = {} } }
x['hi'] #=> x == {"hi"=>{}}
x['hi']['ho'] #=> x == {"hi"=>{"ho"=>{}}}
x['hi']['ho']['silver'] #=> returns nil, x remains the same
x['hi']['ho']['silver']['away'] #=> throws NoMethodError: undefined method `[]' for nil:NilClass

在上面的示例中,将发生以下情况:

Hash.new { |h, k| h[k] = Hash.new { |h, k| h[k] = Hash.new { |h, k| h[k] = Hash.new { |h, k| h[k] = { etc. } } } } }

我不确定我对此解释的程度如何,很高兴回答评论或接受修改。还没有看到重复的,如果有人问过,我很抱歉。有兴趣了解是否可以这样做-预先感谢您提供任何答案。

0 个答案:

没有答案