`

娃娃鸭学Ruby-35、编写自定义的迭代器

阅读更多
自定义的迭代器

可调用一个与方法调用相关联的代码块

def twice
  yield
  yield
end

def sequence(n,m,c)
  i=0
while(i<n)
    yield m*i +c
    i+=1
end
end

sequence(3,5,1){|y| puts y}
irb(main):008:0> sequence(3,5,1){|y| puts y}
1
6
11
=> nil

更复杂代码,
  迭代器内部使用另一迭代器
def circle(r,n)
  n.times do |i|
  angle=Math::PI * 2*i /n
  yield r*Math.cos(angle),r*Math.sin(angle)
end
end

def sequence(n,m,c)
  i,s=0,[]
while(i<n)
y=m*i+c
yield y if block_given?
s<<y
i+=1
end
s
end

2011-4-19 14:59 danny
分享到:
评论

相关推荐

    Ruby-ActiveModel的自定义验证用于检查数组是否包含在另一个中

    这个标题提到的"Ruby-ActiveModel的自定义验证用于检查数组是否包含在另一个中"是一个具体的验证场景,常常在数据校验时会用到,比如确保用户输入的数据符合特定的范围或者限制。 自定义验证是ActiveModel的一个...

    ruby-2.5.3-x64 下载

    标题中的"ruby-2.5.3-x64"指的是Ruby语言的特定版本,2.5.3,这是一个64位的构建。Ruby的版本迭代频繁,每个新版本通常会包含性能优化、新的特性和错误修复。2.5.3是2018年发布的一个稳定版本,它带来了诸如改进的...

    Ruby-DingTalkBot是阿里钉钉自定义机器人的Ruby库

    Ruby-DingTalkBot是针对阿里钉钉自定义机器人的一款Ruby编程语言实现的库,它使得开发者可以方便地在Ruby环境中与钉钉机器人进行交互,发送各种类型的消息到钉钉群或者个人工作台,从而实现自动化通知、信息推送等...

    Ruby-GodRuby编写的一个易于配置易于扩展的监测框架

    God的扩展性体现在其插件机制上,你可以编写自定义的插件来实现特定的监控需求。God社区也提供了许多预置插件,用于监控MySQL、Nginx、Resque等常见服务。此外,God还支持通过事件系统与其他系统进行集成,例如发送...

    Ruby-fastrubyRuby编写快速收集常见Ruby惯用语

    `fast-ruby` 结合了像`Benchmark`模块、`ruby-prof` 和 `pry-byebug` 等工具,教你如何进行代码分析和性能测试。 8. **块和上下文传递** 使用块和Proc对象时,理解闭包行为和上下文关系是关键。`fast-ruby` 展示了...

    Ruby-BluepillRuby编写的简单进程监控工具

    Ruby-Bluepill是一款由Ruby语言编写的简单而强大的进程监控工具。它被设计用来确保你的应用程序在生产环境中始终保持运行状态,即使某个进程崩溃,Bluepill也会自动重启它,从而提供了高可用性和稳定性。这个工具...

    ruby-2.4.5.tar.gz

    解压`ruby-2.4.5.tar.gz`后,你会得到一个名为`ruby-2.4.5`的目录,其中包含了Ruby源代码的所有文件和子目录。这些文件可能包括但不限于: 1. `README`: 提供关于该版本的基本信息和安装指南。 2. `INSTALL`: 包含...

    Ruby-EmojiRSpec用于RSpec的自定义Emoji格式化程序

    Ruby-EmojiRSpec是一款专为RSpec设计的自定义格式化程序,它将测试结果以表情符号(Emoji)的形式展示,使得测试输出更加直观和有趣。在Ruby开发过程中,测试是保证代码质量的重要环节,RSpec作为一款强大的行为驱动...

    ruby-1.9.2-p290.tar.gz

    标题中的"ruby-1.9.2-p290.tar.gz"是一个开源编程语言Ruby的特定版本的归档文件,采用流行的tar和gzip格式进行压缩。这个版本是Ruby的1.9.2分支的一个更新点,标记为p290,意味着它是该分支的第290个补丁级别。在...

    Ruby-rubybuild编译和安装Ruby

    `ruby-build`还支持自定义配置选项,比如在安装时指定jemalloc作为内存管理器,或者不安装默认的gemset。例如: ```bash $ rbenv install -v 2.7.3 --configure-opt --with-jemalloc ``` 在日常开发中,`rbenv`和`...

    Ruby-femto一个用Ruby编写的最小文本编辑器没有依赖关系

    Ruby-femto是一个基于Ruby语言实现的轻量级文本编辑器,它的设计目标是极简主义,不依赖任何外部库或组件,使得它在各种环境下都能轻松运行。这个项目展示了Ruby语言的灵活性和实用性,为那些希望快速启动并运行一个...

    Ruby-GitScribe编写一本电子书的最佳方式

    Ruby-GitScribe是用于创建和管理电子书的开源工具,尤其适合那些希望采用结构化、版本控制的方式来组织内容的作者。它结合了Ruby的灵活性和Git的强大版本控制功能,为编写、组织和发布电子书提供了一种高效的方法。...

    ruby-debug命令详解

    `ruby-debug`允许自定义命令别名,例如`alias l p`创建一个别名`l`,它等同于`p`命令。 9. **退出调试器** 输入`q`或`quit`退出调试器。 ### 三、集成开发环境(IDE)支持 许多Ruby IDE和编辑器,如RubyMine、...

    ruby-1.8.7.tar.gz

    Ruby 1.8.7 包含了 Ruby 解释器和其他必要的库,使得开发者能够在这个环境中编写和运行 Ruby 代码。在描述中提到,这个 `.tar.gz` 文件是用户在搭建 Redmine 过程中需要用到的,这表明 Redmine 可能需要特定版本的 ...

    ruby-2.6.1.tar.gz

    在本场景中,"ruby-2.6.1.tar.gz" 是一个Ruby编程语言的特定版本,即2.6.1,以压缩格式提供。这种格式通常是Linux和Unix系统中常见的,用于存储和分发软件包,它可以通过tar命令解压,再用gzip工具进行解压缩。 ...

    Ruby-rubyfann与FANNFastArtificialNeuralNetwork接口的Ruby库

    Ruby-rubyfann是一个Ruby语言编写的库,它为Fast Artificial Neural Network(FANN)提供了一个接口。FANN是一个开源的、快速的神经网络库,主要用于实现人工神经网络(ANNs)。通过ruby-fann,Ruby开发者可以方便地...

    Ruby-Whois一个智能纯Ruby实现的WHOIS客户端与解析器

    Ruby-Whois是一个高效、灵活且完全用Ruby语言编写的WHOIS客户端和解析库。它设计用于查询域名、IP地址和其他WHOIS相关的记录,并能够处理各种服务器响应格式。这个库的强大之处在于它不仅可以发送WHOIS请求,还可以...

    ruby-1.9.3-p551.tar.gz

    标题中的"ruby-1.9.3-p551.tar.gz"表明这是一个使用Ruby编程语言的特定版本,即1.9.3-p551,它被打包成一个gzip压缩的tar档案。Ruby是一种面向对象的、动态类型的脚本语言,广泛用于Web开发、服务器端脚本以及各种...

    ruby-2.4.0.tar.gz

    在描述中提到的"ruby-2.4.0.tar.gz"是Ruby的一个特定版本,即2.4.0,它以压缩格式提供,方便用户下载和安装。这个压缩包通常包含了编译和运行Ruby 2.4.0所需的所有源代码和相关文件。 首先,让我们深入了解一下Ruby...

    笨方法学ruby-中文版

    《笨方法学Ruby》是针对初学者的一本中文教程,旨在通过实践性的学习方式帮助读者掌握Ruby编程语言。这本书的特点是强调动手实践,通过一系列的练习来深化对Ruby语法和编程概念的理解。以下是对该书内容及压缩包文件...

Global site tag (gtag.js) - Google Analytics