帮助重构此代码

min*_*eow 1 ruby if-statement

更新:更好的答案与重构没什么关系,但与设置空键的默认值有关.看到第一个答案 - 非常感谢!

嗨伙计们,你会如何重构这个?

    if n=network_stats["b"]
      network_stats["b"] = n +1 
    else
      network_stats["b"]=1
    end
Run Code Online (Sandbox Code Playgroud)

我有一种唠叨的感觉,这可以用2行完成

Szy*_*Jeż 5

这是一个简短易读的oneliner:

network_stats["b"] = (network_stats["b"] || 0) + 1
Run Code Online (Sandbox Code Playgroud)

并且更长但可能更具可读性和可扩展性(将来会添加更多案例)版本:

network_stats["b"] = case network_stats["b"]  
                       when nil then 0  
                       else network_stats["b"] + 1  
                     end  
Run Code Online (Sandbox Code Playgroud)

更新:作为一个好奇心,这可以工作:

 network_stats["b"] += 1 rescue network_stats["b"] = 1
Run Code Online (Sandbox Code Playgroud)

我不会亲自使用它.