是否有Rubier方式
if !arr.blank?
arr.map{|x| x.do_something}
end
用于Ruby中的空数组,以及Rails中的空关系
答案 0 :(得分:2)
您可以将此用于可能为空甚至是nil
的数组:
Array(arr).map(&:do_something)
对于Rails中的关系,它只是以下内容,因为Rails的关系不会返回nil
:
relation.map(&:do_something)
答案 1 :(得分:1)
您可以使用unless
将其缩短为一行。也可以使用Symbol#to_proc代替显式块:
arr.map(&:do_something) unless arr.blank?
答案 2 :(得分:0)
如果可能的话,在条件确定中避免负逻辑是一种很好的做法。而不是
if !arr.blank?
arr.map{|x| x.do_something}
end
你可以写
if arr.present?
arr.map{|x| x.do_something}
end
包含总是比排除更快的操作。
答案 3 :(得分:0)
因此,如果你有一个可能有nil值的数组,你可以使用Array#compact
返回没有nil值的数组。
2.2.0 :013 > arr = [1, nil, "2"]
2.2.0 :014 > arr.compact
=> [1, "2"]
如果数组是空的,#map
方法不会产生副作用,这样您就可以安全无需检查数组是否为空。