这是我的代码可行,但我正在寻找更清洁的解决方案。我试图避免首先将我的阵列初始化。
users = []
employees_to_import.each do |employee|
users << User.new(employee.slice(:first_name, :last_name, :email))
end
ruby中是否有一种方法可以调用它来做这样的事情?
users = employees_to_import.push_each do |employee|
User.new(employee.slice(:first_name, :last_name, :email))
end
不确定是否存在这样的方法,我在文档中没有看到任何内容,但我想我会问。
答案 0 :(得分:3)
您可以使用map
方法:
users = employees_to_import.map do |employee|
User.new(employee.slice(:first_name, :last_name, :email))
end
它的别名为collect
。
从文档(here):
map
和collect
基本上返回一个新数组,其中包含每个元素运行一次块的结果:
(1..4).map { |i| i*i } #=> [1, 4, 9, 16]