ruby - 什么是选择和接受 Ruby 的好方法?

标签 ruby select iterator

假设您有一个包含 1,000 个项目的列表,并且想要选择 10 个。选择的条件是昂贵的,但选择的机会很高(比如 99%)。

list.select do |item|
  item if is_ok?(item)
end.take(10)

此代码非常低效,因为它检查每个项目,而很少需要检查超过 10 个。

什么是更好、更高效的 Rubyish 方式?

最佳答案

lazy enumerators :

list2 = list.lazy.select { |item| is_ok?(item) }.take(10) # .to_a to get an array

根据@tadman 的评论,让我强调一下 .select { |x| x 如果 p(x) } 是多余的,在过滤器中你只使用谓词:select { |x| p(x) .

关于ruby - 什么是选择和接受 Ruby 的好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39321033/

相关文章:

Ruby 错误 - 未初始化的常量 OpenStruct (NameError)

ruby - 每个页面上的 Jekyll 分页

php - MySQL 数据通过 php 显示。如果选择则显示选中的数据,如果不选择;显示全部数据。我怎样才能做到这一点?

sqlite - SUM()函数在sqLite中不起作用

java - 使用Iterator遍历ArrayList并使用instanceof设置对象

c++ - 如何在 C++ 中返回一个有效的迭代器?

ruby - 如何使用 ruby​​1.9 部署 Rack 应用程序?

ruby-on-rails - 为什么使用 Sidekiq 的 redis 命名空间不起作用?

javascript - 使程序范围选择对用户可见?

c++ - 共享迭代器相同的可迭代?