如果值为nil,如何使用ruby分配默认值?

时间:2017-07-28 04:23:02

标签: ruby operators

如果json_element['LIMIT']没有值,我有以下默认值为5:

json_element['LIMIT'] = 500
limit           ||=  json_element['LIMIT'].to_i
limit           ||=  5

这是当前的实现,但似乎有一行太长了。

1 个答案:

答案 0 :(得分:2)

正如Amndan所说,这里的想法是你按优先顺序排序,从最高到最低,从左到右,所以一般来说:

def do_thing(limit_override)
  limit ||= limit_override || input || DEFAULT
end

在您的情况下,您正在测试Hash属性并转换为整数,因此您可以选择:

limit ||= json_element['LIMIT'] ? json_element['LIMIT'].to_i : 5

或者只是to_i无论你得到什么,即使它的效率稍微低一点:

limit ||= (json_element['LIMIT'] || 5).to_i