我與返回的哈希來表示產品的API時:不存在散列鍵的醜陋默認值的種類?
prod = API.getProduct(id)
prod["name"] => "Widget"
問題棱因爲不是所有的產品都含有相同的屬性頁,所以我覺得自己做了很多一次性的錯誤捕獲 - 某些產品將擁有size
或color
的鑰匙,有些不會。
去prod["non-existent attribute"] => "NA"
最簡單的方法是什麼?
我與返回的哈希來表示產品的API時:不存在散列鍵的醜陋默認值的種類?
prod = API.getProduct(id)
prod["name"] => "Widget"
問題棱因爲不是所有的產品都含有相同的屬性頁,所以我覺得自己做了很多一次性的錯誤捕獲 - 某些產品將擁有size
或color
的鑰匙,有些不會。
去prod["non-existent attribute"] => "NA"
最簡單的方法是什麼?
戴維牛頓說,你可以添加默認值到哈希構造:
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
我以爲你可以傳遞默認值;有改變嗎? – 2013-03-26 19:34:32
不,它沒有,你是對的。我通常使用上面的語法主要是出於習慣。我會更新我的答案以顯示更快的語法。 – MrDanA 2013-03-26 19:39:11
看一看:http://www.ruby-doc.org/core-1.9.3/Hash.html#method-i-default
您可以使用prod.default = "NA"
。
Prov ide默認值的哈希構造函數?將功能直接添加到哈希實例? – 2013-03-26 19:22:43
假設一個正常的散列,請參閱['Hash.new'](http://ruby-doc.org/core-2.0/Hash.html#method-c-new) – 2013-03-26 19:23:42
@DaveNewton現在使用Google搜索這些東西...: ) – RSG 2013-03-26 19:23:59