2.12Ruby语言的迭代器(Iterator)

迭代器是一种特殊的带块的方法。

迭代器(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/rubybasic/1511.html

发表评论

登录后才能评论