重构一个ruby方法

时间:2013-11-23 23:31:54

标签: ruby-on-rails ruby methods refactoring

我似乎用以下模式编写了很多方法,似乎应该有更好的方法。是否有单行或更好的做法?

def combine_roster(roster)
  rstr = []
  roster.each do |r|
    rstr << r.user
  end
  rstr
end

1 个答案:

答案 0 :(得分:5)

是的,您可以使用map命令。以下是您尝试做的简写版本:

roster.map(&:user) # if roster = [r1, r2, r3] then the output will be [r1.user, r2.user, r3.user]

您可以在Ruby Array API中阅读有关map函数的更多信息:http://ruby-doc.org/core-2.0.0/Array.html#method-i-map