Ruby:如何在通过散列文字表示法创建的散列上为 nil 键设置默认值?
Ruby: How to set a default value for nil keys on a hash created via hash literal notation?
在我正在学习的免费 Ruby 课程中,向我展示了通过构造函数为散列创建默认值的方法。它看起来像这样:
no_nil_hash = Hash.new("default value for nil key")
puts no_nil_hash["non_existing_key"]
打印:default value for nil key
我如何通过散列文字表示法来解决这个问题?
没有通过 google 找到任何答案,这是我迄今为止徒劳的尝试:
via_hash_literal = {"default value for nil key"}
但这会导致错误:syntax error, unexpected '}', expecting =>
via_hash_literal = {=> "default value for nil key"}
导致更多错误:
syntax error, unexpected =>, expecting '}'
via_hash_literal = { => "default value for nil key"}
syntax error, unexpected '}', expecting end-of-input
...=> "default value for nil key"}
via_hash_literal = {nil => "default value for nil key"}
不会抛出错误,但 puts via_hash_literal["non_existing_key"]
不会打印默认键:default value for nil key
,而是我得到一行空行。
可以这样写:
no_nil_hash = {}
no_nil_hash.default = "default value for nil key"
puts no_nil_hash["non_existing_key"]
IRB 结果:
irb(main):001:0> no_nil_hash = {}
=> {}
irb(main):002:0> no_nil_hash.default = "default value for nil key"
=> "default value for nil key"
irb(main):003:0> no_nil_hash["non_existing_key"]
=> "default value for nil key"
在 Ruby 中生成新散列的 {}
语法不支持设置默认值。但您也可以使用 Hash#default=
设置默认值:
hash = {}
hash.default = "default value"
hash[:foo]
#=> "default value"
在我正在学习的免费 Ruby 课程中,向我展示了通过构造函数为散列创建默认值的方法。它看起来像这样:
no_nil_hash = Hash.new("default value for nil key")
puts no_nil_hash["non_existing_key"]
打印:default value for nil key
我如何通过散列文字表示法来解决这个问题?
没有通过 google 找到任何答案,这是我迄今为止徒劳的尝试:
via_hash_literal = {"default value for nil key"}
但这会导致错误:syntax error, unexpected '}', expecting =>
via_hash_literal = {=> "default value for nil key"}
导致更多错误:syntax error, unexpected =>, expecting '}'
via_hash_literal = { => "default value for nil key"}
syntax error, unexpected '}', expecting end-of-input
...=> "default value for nil key"}
via_hash_literal = {nil => "default value for nil key"}
不会抛出错误,但puts via_hash_literal["non_existing_key"]
不会打印默认键:default value for nil key
,而是我得到一行空行。
可以这样写:
no_nil_hash = {}
no_nil_hash.default = "default value for nil key"
puts no_nil_hash["non_existing_key"]
IRB 结果:
irb(main):001:0> no_nil_hash = {}
=> {}
irb(main):002:0> no_nil_hash.default = "default value for nil key"
=> "default value for nil key"
irb(main):003:0> no_nil_hash["non_existing_key"]
=> "default value for nil key"
在 Ruby 中生成新散列的 {}
语法不支持设置默认值。但您也可以使用 Hash#default=
设置默认值:
hash = {}
hash.default = "default value"
hash[:foo]
#=> "default value"