【问题标题】:Is there a shortcut of += if not zero in {} in rubyruby 中的 {} 中是否有 += 如果不是零的快捷方式
【发布时间】:2013-03-16 18:26:00
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby syntactic-sugar


    【解决方案1】:

    试试这个尺寸:

    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 = Hash.new([]) 之类的操作,则会为每个缺失值返回相同的数组。
    【解决方案2】:

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

    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
    

    【讨论】:

      【解决方案3】:

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

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

      你可以设置一个默认值:

      x=Hash.new(0)
      

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-11
        相关资源
        最近更新 更多