有什麼快捷方式(syntaxtic糖)的紅寶石功能做到這一點不爲零的捷徑嗎?是否有+ =如果{}在紅寶石
# x[5] += 3 that zeroes first if x[5] does not exists
x = {}
x.key? 5 ? x[5] = 3 : x[5] += 3
有什麼快捷方式(syntaxtic糖)的紅寶石功能做到這一點不爲零的捷徑嗎?是否有+ =如果{}在紅寶石
# x[5] += 3 that zeroes first if x[5] does not exists
x = {}
x.key? 5 ? x[5] = 3 : x[5] += 3
嘗試了這一點尺寸爲:
x = Hash.new(0)
x[5] += 3
puts x[5] => 3
x[5] += 3
puts x[5] => 6
使用Hash.new(a_value)將使散列返回該值時沒有鍵存在:http://apidock.com/ruby/v1_9_3_392/Hash/new/class
確實有一個速記符號用於初始化,如果沒有初始化。
x = {}
x[5] ||= 0 # x[5] is 0
x[5] += 3 # x[5] is 3
x[5] ||= 0 # x[5] is 3
x[5] += 3 # x[5] is 6
如果它只是整數,你可以這樣做:
x[5] = x[5].to_i + 3
你可以設置一個默認值:
x=Hash.new(0)
您可能要做到這一點這是一個更具全球性的解決方案
x[5] = (x[5] || 0) + 3
啊,這是我需要的^^感謝.. – Kokizzu 2013-03-26 19:44:20
沒問題,很樂意幫忙。請注意,如果您執行類似x = Hash.new([])的操作,它會爲每個缺失值返回相同的數組。 – rainkinz 2013-03-26 19:46:47