0

ruby 中是否有任何快捷方式(语法糖)功能可以做到这一点?

# x[5] += 3 that zeroes first if x[5] does not exists

x = {}
x.key? 5 ? x[5] = 3 : x[5] += 3 
4

3 回答 3

5

试试这个尺寸:

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

于 2013-03-26T19:35:37.220 回答
3

如果没有初始化,确实有一个用于初始化的简写符号。

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
于 2013-03-26T19:39:31.043 回答
0

如果它只是整数,你可以这样做:

x[5] = x[5].to_i + 3

你可以设置一个默认值:

x=Hash.new(0)

您可能想要这样做,这是一个更全球化的解决方案

x[5] = (x[5] || 0) + 3
于 2013-03-26T19:45:19.490 回答