通常,当元素传递到没有匹配键的哈希时,哈希返回nil.
hsh = {1 => "one", 2 => "two"}
hsh[3] #=> nil
Run Code Online (Sandbox Code Playgroud)
我想形成一个哈希值,如果没有匹配则返回传递给它的值.
hsh[3] #=> 3
Run Code Online (Sandbox Code Playgroud)
我猜这个解决方案可能涉及某种lambda ......?
**现在我正在使用一个笨拙的解决方案,使用条件方法来防止不匹配的密钥被传递到哈希..
如果您只想返回新值但不想添加它们:
h = Hash.new { |_hash, key| key }
Run Code Online (Sandbox Code Playgroud)
要最初填充此哈希,您可以执行以下操作:
h.merge( {1 => "one", 2 => "two"} )
Run Code Online (Sandbox Code Playgroud)
如果哈希已经创建*:
h.default_proc = proc do |_hash,key|
key
end
#h[3]
#=> 3
Run Code Online (Sandbox Code Playgroud)
*仅限于红宝石1.9及以上版本
| 归档时间: |
|
| 查看次数: |
514 次 |
| 最近记录: |