目录
迭代器是一种特殊的带块的方法。
迭代器(iterator)是Ruby最为重要的特性之一,又称为 迭代器方法,虽然while、until和for循环是Ruby语言的核心部分之一,但是通常情况下我们更倾向于使用 迭代器 来编写循环。
从迭代器的英文拼写可以知道,迭代器表示的是循环(iterate)的容器(-or),所以迭代器是表示循环的方法。类似地,运算符(operator)也就是运算(operate)的容器(-or)。
1.times迭代器
循环次数.times do
希望循环的处理
end
7.times do
puts "满地油菜花"
end
> ruby times.rb
满地油菜花
满地油菜花
满地油菜花
满地油菜花
满地油菜花
满地油菜花
满地油菜花
带块的times迭代器
循环的次数默认是从0开始计算的。
5.times do |i|
puts "第#{i}此的循环。"
end
> ruby times.rb
第0次的循环。
第1次的循环。
第2次的循环。
第3次的循环。
第4次的循环。
2.each迭代器
对象.each do |块变量|
希望循环的处理
end
a = [3,2,1]
a[3] = a[2] - 1
a.each do |x|
print x+1
end #结果为"4321"
3.loop迭代器
没有终止的循环,可以使用break跳出循环或者Ctrl+c来强行终止程序。
loop do
print "Ruby"
end
4.upto/downto迭代器
n.times与0.upto(n-1)是等价的。
1.upto(6) { |x| print x } #prints "123456"
6.upto(1) { |x| print x } #prints "654321"
5.map迭代器
a = [1,2,3,4]
b = a.map { |x| x*x } # [1,4,9,16]
6.select/reject迭代器
a = [1,2,3,4]
b = a.select { |x| x%2==0 } # [2,4]
c = a.select { |x| x%2==0 } # [1,3]
7.inject迭代器
a = [1,2,3,4]
a.inject do |sum,x|
sum + x
end # 计算元素的和:10
原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/ruby/rubylang/1511.html