1.10Ruby语言的迭代器(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/rubylang/1511.html

(0)
上一篇 2020年7月9日 02:30
下一篇 2020年7月11日 01:52

相关推荐

  • 1.9Ruby语言的块(Block)以及带块的方法

    块 又被称为 代码块 ,位于do~end(包括do和end关键字)或者花括弧{~}(包括花括弧)中间的代码就是 代码块 。代码块不可单独存在,只有出现在一个方法调用之后才是合法的。 程序的控制流首先执行方法,当遇到yield时,控制流会从方法转移到那个与方法调用相关联的代码块中,当程序执行完代码块之后,方法重新获得控制…

    Ruby语言教程 2020年7月9日
    07250
  • 2.1Ruby语言的模块(Module)

    模块是方法、常量、类变量的集合。模块遵循标识符的命名规则,一般PascalCase命名法。 模块不能被实例化 模块也不能被子类继承 模块的定义 场景一:混入(mixin) 在定义类时使用include,模块中的方法、常量、类变量就都能被类引用。 像上述代码那样,虽然有点类似于类的继承,但mix-in可以更加灵活地解决下…

    Ruby语言教程 2020年8月1日
    05740
  • 1.5Ruby数据类型之字符串类(String)

    字符串的创建 字符串的连接 字符串内插(String Interpolation) #{变量名} 写法,可以把计算后得到的值嵌入到字符串中。 字符串中常见的 \ 转义符

    Ruby语言教程 2020年7月5日
    07560

发表评论

登录后才能评论