枚举空/零,Ruby方式

时间:2015-04-19 10:15:45

标签: ruby-on-rails ruby

是否有Rubier方式

if !arr.blank?
  arr.map{|x| x.do_something}
end

用于Ruby中的空数组,以及Rails中的空关系

4 个答案:

答案 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方法不会产生副作用,这样您就可以安全无需检查数组是否为空。