Ruby中,如何设置所有哈希键的默认值相同?

2026-04-10 06:591阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计268个文字,预计阅读时间需要2分钟。

Ruby中,如何设置所有哈希键的默认值相同?

默认情况下,创建新的哈希对象时,可以使用以下方式为未知密钥分配默认值:

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

像这样设置哈希的默认值:

hash = Hash.new { |hsh, key| hsh[key] = {} }

将为未知密钥创建(并分配)新哈希,但对于创建的哈希的未知密钥将返回nil:

hash[:unkown_key] #=> {} hash[:unkown_key][:nested_unknown] #=> nil

我可以让它适用于第二级,如下所示:

hash = Hash.new do |hsh, key| hsh[key] = Hash.new { |nest_hsh, nest_key| nest_hsh[nest_key] = {} } end

但是,它在第​​三级不起作用:

hash[:unkown_key][:nested_unknown] #=> {} hash[:unkown_key][:nested_unknown][:third_level] #=> nil

如何让它在任意级别工作?

Ruby中,如何设置所有哈希键的默认值相同?

hash[:unkown_key][:nested_unknown][:third_level][...][:nth_level] #=> {} 思维弯曲,但你可以将哈希的 default_proc传递给内部哈希:

hash = Hash.new { |h, k| h[k] = Hash.new(&h.default_proc) } hash[:foo] #=> {} hash[:foo][:bar] #=> {} hash[:foo][:bar][:baz] #=> {} hash #=> {:foo=>{:bar=>{:baz=>{}}}}

标签:像这样

本文共计268个文字,预计阅读时间需要2分钟。

Ruby中,如何设置所有哈希键的默认值相同?

默认情况下,创建新的哈希对象时,可以使用以下方式为未知密钥分配默认值:

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

像这样设置哈希的默认值:

hash = Hash.new { |hsh, key| hsh[key] = {} }

将为未知密钥创建(并分配)新哈希,但对于创建的哈希的未知密钥将返回nil:

hash[:unkown_key] #=> {} hash[:unkown_key][:nested_unknown] #=> nil

我可以让它适用于第二级,如下所示:

hash = Hash.new do |hsh, key| hsh[key] = Hash.new { |nest_hsh, nest_key| nest_hsh[nest_key] = {} } end

但是,它在第​​三级不起作用:

hash[:unkown_key][:nested_unknown] #=> {} hash[:unkown_key][:nested_unknown][:third_level] #=> nil

如何让它在任意级别工作?

Ruby中,如何设置所有哈希键的默认值相同?

hash[:unkown_key][:nested_unknown][:third_level][...][:nth_level] #=> {} 思维弯曲,但你可以将哈希的 default_proc传递给内部哈希:

hash = Hash.new { |h, k| h[k] = Hash.new(&h.default_proc) } hash[:foo] #=> {} hash[:foo][:bar] #=> {} hash[:foo][:bar][:baz] #=> {} hash #=> {:foo=>{:bar=>{:baz=>{}}}}

标签:像这样