【发布时间】:2013-06-25 15:30:14
【问题描述】:
这对我来说是一个常见的、重复的习惯用法:使用正则表达式过滤一个数组,然后返回一个子数组。我的方法看起来不太像 Ruby(我来自 Java)。我最终得到了许多看起来很像这样的方法。
改进此代码的惯用 Ruby 方法是什么?
def get_all_gifs(items_)
output = Array.new
filter = /\.jpg$/
items_.each do |item|
next if item =~ filter
output << item
end
output
end
【问题讨论】:
-
你是如何获得文件名的?如果从磁盘中,您可以在检索名称时使用
Dir.glob('*.jpe?g')过滤它们 -
我想几乎每个人都误解了我的问题(也许是因为我问得不好)。该示例可能加载过多。这与图像或文件名或文件扩展名无关。这是关于数组的过滤,以及一个更好的方法来做到这一点。