在红宝石中,{}中是否存在+ =的快捷方式,如果不是零

时间:2013-03-26 19:34:33

标签: ruby syntactic-sugar

ruby​​中有没有快捷方式(syntaxtic sugar)功能吗?

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

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

答案 2 :(得分:0)

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

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

您可以设置默认值:

x=Hash.new(0)

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

x[5] = (x[5] || 0) + 3