ruby杂

分享到...

复制网址邮件QQ空间新浪微博MSN腾讯微博人人网开心网百度搜藏谷歌Buzz搜狐微博腾讯朋友淘江湖网易微博豆瓣查看更多(96)

这是什么工具?

JiaThis

分享到各大网站

复制网址收藏夹邮件谷歌BuzzQQ空间百度搜藏新浪微博搜狐微博网易微博腾讯微博人人网开心网搜狐白社会淘江湖百度空间腾讯朋友天涯社区凤凰微博饭否手机优士网GMAIL邮箱Hotmail邮箱Yahoo! mail飞信51社区谷歌有道书签QQ收藏MSN新浪vivi微软live雅虎收藏115收藏和讯天极139说客百度贴吧好诶嘀咕网豆瓣抓虾鲜果做啥人间网Follow5和讯微博梦幻人生deliciousdiggfacebooktwittermyspacePOCO网若邻网中金微博乐收奇客发现同学网挖客网收客网创业邦就喜欢114啦救救地球抽屉网递客网豆瓣9点黑米书签宝盒网易集网PDF在线转换友好打印英文翻译谷歌阅读器w3c验证Bit.lyDIIGO.comEverNoteFriendFeedLinkedInMIXXNetLogNetvibes.comPhonefavsping.fmPlaxo.comPollAdiumRedditMister-WongStumbleuponPlurk.comFunp.comAsk.commysharefwisp

这是什么工具?

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 Ruby

2011-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=
  • 标签:Ruby

1.使用||延迟初始化

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)
    我要评论

发表评论

用户名: 匿名

最新文章

ruby杂_第1张图片

(转)项目管理..

ruby杂_第2张图片

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的用法
    • ·一个脚本×关键词“百度说吧”你懂的

    推荐文章

    ruby杂_第3张图片

    netbean..

    ruby杂_第4张图片

    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号

  • 你可能感兴趣的:(ruby杂)