ruby杂
分享到...
复制网址 邮件 QQ空间 新浪微博 MSN 腾讯微博 人人网 开心网 百度搜藏 谷歌Buzz 搜狐微博 腾讯朋友 淘江湖 网易微博 豆瓣 查看更多(96)
这是什么工具?
JiaThis
分享到各大网站
复制网址 收藏夹 邮件 谷歌Buzz QQ空间 百度搜藏 新浪微博 搜狐微博 网易微博 腾讯微博 人人网 开心网 搜狐白社会 淘江湖 百度空间 腾讯朋友 天涯社区 凤凰微博 饭否 手机 优士网 GMAIL邮箱 Hotmail邮箱 Yahoo! mail 飞信 51社区 谷歌 有道书签 QQ收藏 MSN 新浪vivi 微软live 雅虎收藏 115收藏 和讯 天极 139说客 百度贴吧 好诶 嘀咕网 豆瓣 抓虾 鲜果 做啥 人间网 Follow5 和讯微博 梦幻人生 delicious digg facebook twitter myspace POCO网 若邻网 中金微博 乐收 奇客发现 同学网 挖客网 收客网 创业邦 就喜欢 114啦 救救地球 抽屉网 递客网 豆瓣9点 黑米书签 宝盒网 易集网 PDF在线转换 友好打印 英文翻译 谷歌阅读器 w3c验证 Bit.ly DIIGO.com EverNote FriendFeed LinkedIn MIXX NetLog Netvibes.com Phonefavs ping.fm Plaxo.com PollAdium Reddit Mister-Wong Stumbleupon Plurk.com Funp.com Ask.com myshare fwisp
这是什么工具?
JiaThis
Lazy evaluation in Ruby_Ruby_编程开发_程序员俱乐部
中国优秀的程序员网站 程序员频道 CXYCLUB技术 地图
最新资讯 | 百度新闻 | GOOGLE地图 | RSS订阅 | 更多
职场话题 生活休闲 恋爱交友 程序人生 学习进修 职业发展 项目管理 求职面试 程序员创业 JAVA .NET C/C++ Ruby Delphi JavaScript PHP ASP JSP HTML XML 移动开发 开发工具 其他 编程开发 数据库 操作系统 新闻资讯 互联网 非技术区非技术区 生活休闲 恋爱交友
职业发展 求职面试 程序人生
移动开发 开发工具 DB2 MySql Sybase 开发 JAVA .NET PHP C/C++ 数据库 SQL Server Oracle 互联网 运营 推广 营销 SEO 系统 Linux Unix Windows 资讯 动态 产品 人物 创业 职场 学习 管理热搜:
局域网 繁体字转化为简体字 脚本 预定义变量 CMS 递归 产品经理 性能监测工具 Metric_fu静态代码检查工具 泛域名 Rails3路由 飞信应答机器人 class变量 实例变量 class实例变量 局域网 繁体字转化为简体字 脚本 预定义变量 CMS 递归 产品经理 性能监测工具 Metric_fu静态代码检查工具 泛域名更多>>
您所在的位置: 程序员俱乐部 > 编程开发 > Ruby > Lazy evaluation in Ruby
Lazy evaluation in Ruby2011-1-2 10:31:01 fuliang http://fuliang.javaeye.com 我要评论(0)
摘要:1.使用||延迟初始化 deffib(n)@result||=[]returnnif(0..1).include?n@result[n]||=fib(n- 1)+fib(n-1)end2.使用无穷大InifinityRuby可以使用无穷大:irb(main):001:0>Inf=1/0.0=& gt;Infinityirb(main):002:0>(-Inf..Inf).include?(10)=>true使用 Inifinity可以构造无穷大小的LazyList:lazyList= 标签: Ruby1.使用||延迟初始化
def fib(n) @result ||= [] return n if (0..1).include? n @result[n] ||= fib(n-1) + fib(n-1) end
2.使用无穷大Inifinity
Ruby可以使用无穷大:
irb(main):001:0> Inf = 1 / 0.0 => Infinity irb(main):002:0> (-Inf..Inf).include?(10) => true
使用Inifinity可以构造无穷大小的Lazy List:
lazyList = (0..1/0.0) lazyList.take(100).select{|i| i % 2 == 0} lazyList.take(100).select{rand > 0.9}
3.使用Enumerator:
fib = Enumerator.new { |y| a = b = 1 loop { y << a a, b = b, a + b } } fib.take(10) #=> [1, 1, 2, 3, 5, 8, 13, 21, 34, 55] natural_numbers = Enumerator.new do |yielder| number = 1 loop do yielder.yield number number += 1 end end #lazy select class Enumerator def lazy_select(&block) Enumerator.new do |yielder| self.each do |val| yielder.yield(val) if block.call(val) end end end end p natural_numbers .lazy_select {|n| n % 47 == 0} .lazy_select {|n| palindrome_number?(n)} .first(5)
4.使用Fiber:
fib = Fiber.new do f1 = f2 = 1 loop do Fiber.yield f1 f1, f2 = f2, f1 + f2 end end 10.times { puts fib.resume }
参考:
Lazy Enumerators in Ruby
上一篇: Ruby Proc curry化 下一篇: (转)项目管理工具 Redmine 安装试用手记
相关文章 · Lazy evaluation in R · Ruby Proc curry化 · One line Ruby code · ruby 时间处理 · Ruby复合函数 · Ruby on Rails Tutori · ruby抓取URL内容并解析页面所有UR · ruby各种小脚本(集装箱) · Ubuntu 10.10 下使用RVM安 · windows下安装ruby1.9.2和
查看所有评论(0) 我要评论
发表评论
用户名: 匿名
最新文章
(转)项目管理..
RVM中文使用..
· Safe Alert Request E · mysql随机查询的优化 mysql随机 · 显示html代码的函数 · php生成某个范围内的随机时间 · php 繁体字转化为简体字 · php缓存技术 · php实现无限级分类(递归方法) · php 按最大尺寸 等比例缩放图片 · Xdebug的安装 · Xdebug教程 · php5.3 apache2.2安装配置 · CakePHP i18n 实现 · ZenCart使用之--每页显示商品个数 · ZenCart无法显示添加的细节图片 · 互联网产品经理好书推荐 最新标签 局域网 繁体字转化为简体字 脚本 预定义变量 CMS 递归 产品经理 性能监测工具 Metric_fu静态代码检查工具 泛域名 今日热点 · rails 设置session过期时间 · Conexant Systems HD · rails之路 · Kindeditor rails3 插件 · 在Rails项目中导入excel 导出e · Ruby1.9.2 On Rails3. · Rails 异步发送邮件和测试 · MacVim的学习使用经验 · assert_select的用法 · 一个脚本×关键词“百度说吧”你懂的 推荐文章
netbean..
Rails3路..
· Conexant Systems HD · jstree使用之二 jstree1.0 · MacVim的学习使用经验 · 使用google map v3添加经纬度 · netbeans安装快速调试器出错 ne · Rails3教程系列之一:Rails3入 · ubuntu10.10 ruby1.9. · 在Rails项目中导入excel 导出e · 基于Ubuntu Server 10.0 · Windows下安装Ruby on Ra · Kindeditor rails3 插件 · Ruby及Ruby On Rails 教 · rails 设置session过期时间 · rails3 +jquery-ui+ac · Rails3教程系列之四:Rails3入 English | 关于我们 | 诚聘英才 | 联系我们 | 网站大事 | 友情链接 | 意见反馈 | 网站地图 Powered by 程序员俱乐部 程序提供: HugoCMS 2.0 LinezingStat网站备案:浙ICP备08018443号