Q
红宝石哈希设置
2
A
回答
7
当块被传递到Hash.new
该块每次一个不存在的键调被访问。例如:
h = Hash.new { |hash, key| hash[key] = "Default" }
h[:defined_key] = "Example"
puts h[:defined_key] # => "Example"
puts h[:undefined_key] # => "Default"
2
http://ruby-doc.org/core/classes/Hash.html#M000718
此块定义访问不存在的键时,哈希做什么。所以如果没有键的值,那么它将该值设置为0,然后返回0作为该值。
这不仅仅适用于默认值 - 例如,您可以让它抛出一个例外的例外情况。事实上,如果你只想要一个默认值,你可以说:
Hash.new "defaultValue"
0
其为等于零,而不是无任何新的密钥制作的默认值,观察试验和IRB控制台会话:
$ irb
>> normal_hash = Hash.new
=> {}
>> normal_hash[:new_key]
=> nil
>> h = Hash.new {|hash, key| hash[key] = 0}
=> {}
>> h[:new_key]
=> 0
相关问题
- 1. 红宝石设置默认哈希值
- 2. 红宝石 - 哈希
- 3. 红宝石 - 哈希
- 4. 在红宝石中设置哈希等于另一个哈希
- 5. 红宝石:使哈希=哈希=>设置
- 6. 红宝石哈希“delete_if”空哈希
- 7. 红宝石哈希键compare_by_identity
- 8. 比较红宝石哈希
- 9. 红宝石:通过哈希
- 10. 红宝石哈希转
- 11. 红宝石哈希JSON
- 12. 红宝石数组哈希
- 13. 红宝石 - 在哈希
- 14. 红宝石计算哈希
- 15. 嵌套哈希 - 红宝石
- 16. 红宝石哈希插值
- 17. 红宝石哈希树块
- 18. 红宝石哈希与环
- 19. 红宝石转化哈希
- 20. 红宝石建筑哈希
- 21. 红宝石哈希选择
- 22. 访问哈希红宝石
- 23. 红宝石哈希图?
- 24. SHA256 Base64哈希红宝石
- 25. ASCII SHA1哈希红宝石
- 26. 红宝石哈希初始值设定
- 27. 红宝石哈希.DEFAULT设置为一个列表
- 28. 稀疏矩阵的红宝石哈希
- 29. 红宝石排序哈希和价值
- 30. 红宝石Rails的哈希问题
哦,很酷。这是我第一次看到哈希的特征。 – jdl 2011-03-04 22:45:16
重要的是要意识到,这将设置为0的值为任何* *检查键。这对于一个没有影响的行动来说是一个相当的副作用,所以我通常建议不要这样做。通常最好在你要求的地方赶上零案例,比如'x = h.key?(y)? h [y]:0'或'x = h [y] || 0'。 – 2011-03-05 01:16:27
除非,当然,这个副作用正是你为什么以这种方式宣布散列的原因。 – 2011-03-05 06:12:07