一个更简洁的方法来创建一个数组,填充它,然后返回它?

时间:2013-11-29 10:01:52

标签: ruby arrays

我有扫描项目的方法:

def scan(*items)
  scanned_items = []
  items.each { |item| scanned_items << item }
  scanned_items
end

我经常看到(并使用)这种方法的内容 - 也就是说,创建一个空数组,在其中放入一些东西,然后返回数组。是否有更简洁的方式来写这个?

2 个答案:

答案 0 :(得分:4)

这个具体的例子可以简化为这个

scanned_items = items.dup

答案 1 :(得分:3)

如果无事可做:

items.dup

简单的东西:

items.map(&:simple)

非常复杂的操作:

[].tap do |result|
  items.each do |item|
    # complex conditions, loops, etc
    result << item
  end
end