each
最简单的迭代器,它所做的就是连续访问收集的所有元素。
- [1,3,5,7,9].each { |i| puts i }
输出结果:
1
3
5
7
9
独特的作用就是用来实现Ruby语言的for循环。因为在Ruby内建的循环原语只有while和until。for只是一个语法块。例如:
- for song in songlist
- song.play
- end
Ruby会用each迭代器转换为:
- songlist.each do |song|
- song.play
- end
collect
它从收集中获得各个元素并传递给block。block会返回的结果被用来生成一个新的数组,例如:
- ["H", "A", "L"].collect {|x| x.succ}
输出结果:
- ["I", "B", "M"]
inject
虽然直接翻译中文,名字不好理解,但是它也是很有用的迭代器,让你可以遍历手机的所有成员以累计出一个值。例如:
- [1,3,5,7].inject(0) {|sum,element| sum+element} --> 16
- [1,3,5,7].inject(1) {|product,element| product*element} –> 105
以上就是Ruby中的迭代器简介的详细内容,更多关于Ruby中的迭代器简介的资料请关注九品源码其它相关文章!