赞 | 8 |
VIP | 0 |
好人卡 | 0 |
积分 | 13 |
经验 | 0 |
最后登录 | 2018-8-10 |
在线时间 | 98 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 1345
- 在线时间
- 98 小时
- 注册时间
- 2018-4-12
- 帖子
- 85
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
我们直接进入主题.
puts "如果使用break终止当前循环 " i = 0 ["Perl", "Python", "Ruby", "Scheme"].each do |lang| i += 1 if i == 3 break end p [i,lang] end puts "跳到下一个循环next:" i = 0 ["Perl", "Python", "Ruby", "Scheme"].each do |lang| i += 1 if i == 3 next end p [i,lang] end puts "redo是再执行一次上边的跳过下面的:" i = 0 ["Perl", "Python", "Ruby", "Scheme"].each do |lang| i += 1 if i == 3 redo end p [i,lang] end exit =begin 第一次应该是1,perl. 2,python 第二次应该是1,perl 2,python, 第三次应该是1,perl 2,python, 4,scheme 然额,实际却是 [1, "Perl"] [2, "Python"] [1, "Perl"] [2, "Python"] [4, "Scheme"] [1, "Perl"] [2, "Python"] [4, "Ruby"] [5, "Scheme"] =end
puts "如果使用break终止当前循环 "
i = 0
["Perl", "Python", "Ruby", "Scheme"].each do |lang|
i += 1
if i == 3
break
end
p [i,lang]
end
puts "跳到下一个循环next:"
i = 0
["Perl", "Python", "Ruby", "Scheme"].each do |lang|
i += 1
if i == 3
next
end
p [i,lang]
end
puts "redo是再执行一次上边的跳过下面的:"
i = 0
["Perl", "Python", "Ruby", "Scheme"].each do |lang|
i += 1
if i == 3
redo
end
p [i,lang]
end
exit
=begin
第一次应该是1,perl. 2,python
第二次应该是1,perl 2,python,
第三次应该是1,perl 2,python, 4,scheme
然额,实际却是
[1, "Perl"]
[2, "Python"]
[1, "Perl"]
[2, "Python"]
[4, "Scheme"]
[1, "Perl"]
[2, "Python"]
[4, "Ruby"]
[5, "Scheme"]
=end
先从第二次说起吧!在执行了next后,理论上该跳过下面的,从redo这块地方执行了,可明显又执行一遍,明明都跳到了redo好不好!
然后第三次啊,这一共也就1,2,3,4个文本好不好?但是却多出了行[5.Scheme] 而且[4.Scheme]变成了4.[ruby],4.[ruby]我们先不忙谈,那个5又是从哪里来的啊?
redo也把 ["Perl", "Python", "Ruby", "Scheme"].each do |lang|执行了一遍,然后就应该停止了啊???难道说redo只对上面一行的代码起作用?
|
|