当一个很大的数组或集合需要做循环操作的时候,一次性把数据放到内存会有很大弊端。这时lazy就派上用场了。Float::INFINITY 是无穷大意思
举个例子 取出1到无穷大对7整除余数为0的前10个数值。
(1..Float::INFINITY).select { |x| x % 7 == 0 }.take(10).to_a

  这样写的话会直接卡死,这个时候用lazy

(1..Float::INFINITY).lazy.select { |x| x % 7 == 0 }.take(10).to_a

同样,当我们操作一个很大的文件时,直接做each_line操作会把整个文件都放到内存里。

file = File.open('xxxx', 'r')
file.each_line.select { |row| row.xxx }

用lazy方法会逐步加载文件。

file = File.open('xxxx', 'r')
file.each_line.lazy.select { |row| row }

  

关于Enumerator::lazy 详细用法:

https://railsware.com/blog/2012/03/13/ruby-2-0-enumerablelazy/


转载于:https://www.cnblogs.com/wangyuyu/p/7490130.html

ruby Enumerator::lazy相关推荐

  1. Ruby Enumerator的各种迭代

    Enumerator迭代 Mix-in Enumerator获得的迭代方法: each_cons: each_slice: each_with_index: with_index: each_with ...

  2. 101 Ruby Code Factoids

    101 Ruby Code Factoids 0) 'methods' method Since almost everything in Ruby is an Object you can type ...

  3. RubyConfChina2012, 迟来的博文, 附部分讲师的PPT

    这篇一直躺在evernote里, 时隔一个月放出来, 迟来的博文. Matz , Ruby语言创始人. 松本行弘   平生有如此的机会, 能够见到如此伟大的语言设计师, 能够听他现场布道, 感受cod ...

  4. Ruby之Enumerator类

    今天发现了Ruby1.8.6和 Ruby1.9.2的一个不同之处,试运行以下代码: require 'find'puts Find.find("./data").class 在Ru ...

  5. Ruby 函数式编程

    Ruby 函数式编程 by Arnau Sanchez 本文档翻译自 Arnau Sanchez (tokland)所编译的这份文档 RubyFunctionalProgramming. 同时也有日文 ...

  6. 《Ruby程序员修炼之道》(第2版)目录—导读

    版权 Ruby程序员修炼之道(第2版) • 著 [美] David A. Black 译 钟凤鸣 陈雪静 责任编辑 杨海玲 • 人民邮电出版社出版发行 北京市丰台区成寿寺路11号 邮编 100164 ...

  7. Ruby: 延迟计算与优化

    Ruby 的延迟计算大家已经用得很多了, 下面就是一个范例 class ApplicationControllerdef current_user@current_user ||= User.wher ...

  8. react 日历组件_anujs1.5.1支持React.Suspense与lazy

    React16是一个实验版本,除了测试它的新fiber架构外,还添加了大量新功能.其他React.Suspense与React.lazy就是重磅中的重磅. 随着前端的APP化,不断集成功能,页面越来越 ...

  9. ruby hash方法_Ruby中带有示例的Hash.select方法

    ruby hash方法 哈希选择方法 (Hash.select Method) In this article, we will study about Hash.select Method. The ...

最新文章

  1. wps文档复制粘贴序号_10个文档处理神技能,学会让你少走很多弯路!
  2. ionic 获取input的值
  3. Object C学习笔记12-集合
  4. 如何确认与服务器偏差_货架如何正确验收
  5. 【参会指南】神策 2020 数据驱动用户大会,10 月 13 日将重磅开幕!
  6. 【学亮IT手记】SpringMVC增删改查+map数据返回Controller层代码示例
  7. 计算机导论中的名词解释,计算机导论期末考试试题及答案
  8. Java高级开发面试,java字符串拼接的方法
  9. DMA及cache一致性的学习心得
  10. python print用法不换行_python3让print输出不换行的方法
  11. (自定义组件)通用- X轴横向:溢出滚动 (含代码)- 案例篇
  12. 使用画图软件gunplot出现的问题和解决办法
  13. c++语言计算2的n次方,2的N次方
  14. Chrome浏览器介绍
  15. chrome浏览器怎么把整个网页截图保存
  16. 电子邮箱邮件安全使用技巧,公司电子邮件安全使用总结
  17. 微信小程序navigate标签
  18. 中国移动NBIOT卡的几种APN应用场景
  19. 关于构造和二进制,题目:牛牛的DRB迷宫Ⅱ(源自牛客竞赛2020年寒假集训)
  20. 坚持真理的艰辛——罗巴切夫斯基创立非欧几何的艰难历程

热门文章

  1. deep learning 以及deep learning 常用模型和方法
  2. IM系统中聊天记录模块的设计与实现
  3. Oracle数据库脚本学习:建用户、删用户、建表、改表、删表
  4. 码农提高工作效率(转载)
  5. 在linux中挂载磁盘ext3和ext4之间的区别
  6. 【离散数学】滨江学院 期末考试 题库
  7. Oracle union all和order by一起使用
  8. stegsolve---图片隐写查看器
  9. PowerDesigner概念模型与物理模型相互转换及导出数据字典
  10. 李洪强iOS开发之后使用XIB实现横向滚动的UIScrollView