我正在使用API来返回表示产品的哈希:
prod = API.getProduct(id)
prod["name"] => "Widget"
问题因为并非所有产品都包含相同的属性页面,所以我发现自己做了很多一次性错误捕获 - 有些产品会有size
或color
的密钥,有些会赢“T
到达prod["non-existent attribute"] => "NA"
的最简单方法是什么?
答案 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"
。