假设您有一个包含 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/