Ruby 13th简介:使用while和times进行迭代处理


我将在几部分中简要介绍Ruby。一篇文章的长度应保持尽可能短,以便可以快速阅读。

*评论部分补充了@scivola指出的问题。谢谢@scivola。

环境

Ruby:Ruby 2.5.1
操作系统:macOS High Sierra版本10.13.5

while的基本用法

while用来在只要满足特定条件的情况下想要继续处理时使用。基本用法如下。如果条件为真,则需要小心不要进入无限循环,因为它会继续迭代。另外,do是可选的。

helloworld.rb

1
2
3
while 条件 do
 処理
end

示例

helloworld.rb

1
2
3
4
5
6
count = 0

while count < 5
 puts count
 count += 1
end

终端

1
2
3
4
5
6
MacBook-Pro-od-hoge:~ hoge$ ruby helloworld.rb
0
1
2
3
4

时间的基本用法

如果要迭代指定的次数,可以使用

次。不能省略。请注意,变量中输入的值以``0''开头。如果要从1开始使用,请在过程中执行" 1"。写入方法如下。

helloworld.rb

1
2
3
オブジェクト.times do |変数|
 処理
end

示例

helloworld.rb

1
2
3
5.times do|i|
 puts i
end

终端

1
2
3
4
5
6
MacBook-Pro-od-hoge:~ hoge$ ruby helloworld.rb
0
1
2
3
4

您也可以使用" {?}"而不是" do?end"来编写时间。

helloworld.rb

1
2
3
オブジェクト.times { |変数|
 処理
}

上面可以写成一行。让我们积极地使用它。

helloworld.rb

1
5.times { |i| puts i }

时间和时间之间的差异

while和time都是迭代处理的两种类型,而while虽然是控制结构,但是times是Integer类的方法。

控制结构
控制结构是根据某些条件改变执行程序的顺序或不执行程序的机制。除了一会儿,还有if和raise。在Ruby中,控制结构是一个表达式,它基本上返回一些值。但是,有些例外不会返回值。

而控制结构

由于

while是控制结构,因此与方法时间有以下差异。

1." do"可以省略。
2.不要创建范围

示例

helloworld.rb

1
2
3
4
5
6
7
8
i = 0
while i < 10
 name = "taro"
 puts "#{name}は#{i + 1}回ダッシュしました"
 i += 1
end

puts "#{name}は休憩してください"

终端

1
2
3
4
5
6
7
8
9
10
11
12
MacBook-Pro-od-hoge:~ hoge$ ruby hellworld.rb
taroは1回ダッシュしました
taroは2回ダッシュしました
taroは3回ダッシュしました
taroは4回ダッシュしました
taroは5回ダッシュしました
taroは6回ダッシュしました
taroは7回ダッシュしました
taroは8回ダッシュしました
taroは9回ダッシュしました
taroは10回ダッシュしました
taroは休憩してください

次是方法

times是Integer类的方法,与while相比具有以下区别。而且,时间只能用于Integer类及其别名Fixnum中的对象。

1.由于它是带有" do?end"的块,因此不能省略。
2.块创建范围

helloworld.rb

1
2
3
4
5
6
10.times do |i|
 name = "taro"
 puts "#{name}は#{i + 1}回ダッシュしました"
end

puts "#{name}は休憩してください"

终端

1
2
3
4
5
6
7
8
9
10
11
12
13
MacBook-Pro-od-hoge:~ hoge$ ruby hellworld.rb
taroは1回ダッシュしました
taroは2回ダッシュしました
taroは3回ダッシュしました
taroは4回ダッシュしました
taroは5回ダッシュしました
taroは6回ダッシュしました
taroは7回ダッシュしました
taroは8回ダッシュしました
taroは9回ダッシュしました
taroは10回ダッシュしました
Traceback (most recent call last):
helloworld.rb:6:in `<main>': undefined local variable or method `name' for main:Object (NameError)

块创建作用域时,将发生上述错误。另外,省略" do"将导致错误。

正确使用一段时间

while和time都是迭代处理的类型。如果您只是想处理任意数量的次数。如果要根据条件执行迭代处理,可以像while一样正确使用它来编写易于阅读的代码。

其他迭代处理

除了这次介绍的迭代处理外,还有每个迭代,向上,向下,步骤等,但是下一次我将再次对其进行总结。

在最后

这是第13篇Ruby入门的结尾,使用while和times进行迭代?再见。

参考

控件结构-Ruby 2.5.0参考手册
在Ruby 2.4中将整数统一为Integers --Qiita
[Ruby]关于迭代处理(每次,每次,每次,循环一次)–任务注释
times方法,upto方法,downto方法--RubyLife
[Ruby简介]循环处理摘要|针对"时间","时间","每个","向上","向下","步骤"循环--Samurai Engineer Cram School Blog