これを行うためのショートカット(構文糖)機能はルビーにありますか?
# x[5] += 3 that zeroes first if x[5] does not exists
x = {}
x.key? 5 ? x[5] = 3 : x[5] += 3
これを行うためのショートカット(構文糖)機能はルビーにありますか?
# 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