首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何优化这个ruby方法?它将查询结果解析成一个数组。

我如何优化这个ruby方法?它将查询结果解析成一个数组。
EN

Stack Overflow用户
提问于 2012-11-28 06:43:49
回答 1查看 61关注 0票数 0

这就是我所拥有的:

代码语言:javascript
复制
def existing_photos
  @existing_photos = Array.new
  event.photos.each do |ep|
    @existing_photos << URI.unescape(ep.dropbox_path.split('/').last) rescue []
  end
  @existing_photos
end

它从数据库查询中返回一个文件名数组。我相信有一种更像ruby的方式可以做到这一点。

我也有一个类似的方法,对dropbox-api ls结果做同样的事情。

代码语言:javascript
复制
def all_photos
  @all_photos = Array.new
  @dropbox_files.each do |dbf|
    @all_photos << dbf.path.split('/').last
  end
  @all_photos
end

我认为这也应该被优化。提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2012-11-28 07:00:44

我可能会这么做。

代码语言:javascript
复制
def existing_photos
  event.photos.map { |ep|
    URI.unescape(ep.dropbox_path.sub(%r{.*/}, '') rescue nil
  }.compact
end

获取类似于数组的event.photos,并使用块将其映射为您想要的内容。将其压缩在末尾,以处理nil情况。使用sub只是一种偏好,可能比拆分路径并选择最后一个元素更快(但您可能希望对其进行计时以查看)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13594529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档