不存在的哈希键的丑陋值是什么?

时间:2013-03-26 19:20:41

标签: ruby-on-rails hash

我正在使用API​​来返回表示产品的哈希:

prod = API.getProduct(id)
prod["name"] => "Widget"

问题因为并非所有产品都包含相同的属性页面,所以我发现自己做了很多一次性错误捕获 - 有些产品会有sizecolor的密钥,有些会赢“T

到达prod["non-existent attribute"] => "NA"的最简单方法是什么?

2 个答案:

答案 0 :(得分:4)

正如Dave Newton所说,您可以将默认值添加到哈希构造函数中:

hash = Hash.new { |hash, key| hash[key] = "NA" }
hash[:anything] == "NA" # => true

或使用#default方法:

hash = Hash.new
hash.default = "NA"
hash[:anything] == "NA" # => true

编辑初始化哈希时设置默认值的快速语法是:

hash = Hash.new("NA")
hash[:anything] == "NA" # => true

答案 1 :(得分:0)

看看这个:http://www.ruby-doc.org/core-1.9.3/Hash.html#method-i-default
您可以使用prod.default = "NA"