class TItem
attr_reader :name
def initialize(name)
@name=name
end
def Fibonacci (max)
#初始化
i1,i2=1,1
#循环构建斐波纳契数列
while i1<max
#yield关键字,声明执行块中的内容
#在这儿是传入int=i1并且打印
yield i1
#这样的赋值方式写起来很简洁
i1,i2=i2,i1+i2
end
end
end
arr=Array.new
arr.push(TItem.new('first'))
arr.push(TItem.new('second'))
arr.push(TItem.new('third'))
#依旧支持循环
for i in 0...arr.length
puts arr[i].class==TItem #true
end
#新的迭代方法
titem=arr.find{ |titem| titem.name=='first'}
#打印斐波纳契数列
#{}块中的内容将被TItem.Execute调用
titem.Fibonacci(100){|int| print int,' '}#1 1 2 3 5 8 13 21 34 55 89
#each列举每个元素
arr.each{|titem| puts titem.name} #[first,second,third]
#collect和each是同样的方法
arr.collect{|titem| puts titem.name.succ}#firsu.secone.thire
#书上说应该是string first ,second third
#但是示例出来只有string first ,second.不知为何
#inject的参数是为str赋初值
str=nil
arr.inject("string"){|str ,titem| str+" "+titem.name} #string first second
puts str
#定义另一个数组
arr2=[TItem.new('1'),TItem.new('2'),TItem.new('3')]
#定义方法
def dbexecute(*arrarg)
puts arrarg.length #2
yield arrarg[0] #firstsecondthird
yield arrarg[1] #123
end
#yield迭代执行
dbexecute(arr,arr2) do |array|
array.each{|titem| print titem.name }
puts
end
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/blackant2/archive/2006/11/30/1422831.aspx
分享到:
相关推荐
开源项目“json-iterator-go”是一个针对Go语言的高性能JSON解析库,它的设计目标是提供与标准库`encoding/json`完全兼容的接口,同时在性能上有所提升。这个压缩包`json-iterator-go.zip`包含了项目的源代码,具体...
c++ 的array源码分析和reverse-iterator和-Array-const-iterator类
4. **性能优化**:虽然`async-iterator-all`方便了开发者,但需要注意的是,如果异步迭代器生成大量数据,一次性收集所有值可能会导致内存压力。在这种情况下,可能需要考虑分批处理或使用其他流处理方法。 5. **与...
4. **支持多种遍历方式**:不同的集合可以实现不同的`Iterator`,以适应其自身的数据结构特性,比如顺序访问或随机访问。 ### 四、JDK1.5中的增强for循环 自JDK1.5起,Java引入了增强型for循环,进一步简化了遍历...
javascript js_leetcode题解之173-binary-search-tree-iterator.js
分析-Iterator-base12与-Container-base12
`php-multi-level-array-iterator-master`这个项目很可能包含了完整的实现和示例,你可以下载并研究其代码,以获取更多关于如何在Laravel环境中创建和使用多级数组迭代器的详细信息。 总之,理解并掌握Laravel的...
deque源码分析和类move-iterator,c++的vs2019 ,cpp20语法
Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { String item = iterator.next(); System.out.println(item); } ``` 这段代码首先创建了一个ArrayList,然后添加了三个元素。接着,...
通过以上内容的学习,读者不仅能够掌握Ruby语言的基础知识,还能够深入理解其背后的原理与机制,并具备开发复杂项目的实际能力。这本教材全面覆盖了从基础知识到高级主题的内容,适合不同水平的开发者学习和参考。
开源项目“thrift-iterator-go.zip”是一个基于Go语言实现的工具,用于解码和编码Thrift消息,而无需依赖Thrift接口定义语言(IDL)。Thrift是一种跨语言的服务开发框架,由Facebook开源,旨在提供高效、轻量级的...
Ruby学习笔记 01 类的属性与方法 02 访问控制 03 Container(Array/Hash) 04 Iterator 05 简单数据类型 06 范围 07 方法 08 条件控制 09 异常处理
安装 ... composer require phpunit/php-file-iterator 如果仅在开发过程中需要此库(例如,运行项目的测试套件),则应将其添加为开发时依赖项: composer require --dev phpunit/php-file-iterator
Triangular类,包含对Triangular类的提领操作Triangular_iterator类,以及异常类iterator_overflow。 输入输出样例为: (3,6) Triangular Series of 6 elements 6 10 15 21 28 36
4. 在Java中,`java.lang.Iterable`接口的`iterator()`方法就是从集合对象转换为迭代器对象的关键。例如,List类型的集合可以通过调用`iterator()`方法得到一个迭代器,然后通过迭代器遍历列表的所有元素。 5. 实现...
与--harmony-async-iterator标志一起使用 可以与 IxJS 一起使用 支持自定义承诺 包括打字稿定义 用法 安装 npm install --save lines-async-iterator # or yarn add lines-async-iterator 示例 1(基本) const ...
NX二次开发UF_ATTR_free_user_attribute_iterator_strings 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、...
NX二次开发UF_ATTR_release_user_attribute_iterator 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE ...