设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索

each等方法的提问

查看数: 1832 | 评论数: 2 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-7-7 17:19

正文摘要:

  我们直接进入主题.   RUBY 代码复制puts "如果使用break终止当前循环 " i = 0 ["Perl", "Python", "Ruby", "Scheme"].each do |lang| i += 1 if i == 3 bre ...

回复

clear仔 发表于 2018-7-7 19:38:17
本帖最后由 clear仔 于 2018-7-7 19:41 编辑

没有毛病。
你的next和break仅仅只是在i==3的时候会执行,each do语法相当于是for(foreach)这个数组
这里自己定义的i并不仅仅是角标+1

对于第一种:
i=0
lang = perl
i=1
输出
lang = py
i = 2
输出
lang = ruby
i = 3
中断循环

对于第二种:
i=0
lang = perl
i=1
输出
lang = py
i = 2
输出
lang = ruby
i = 3
`next`
lang = scheme
i = 4
输出

对于第三种:
i=0
lang = perl
i=1
输出
lang = py
i=2
输出
lang = ruby
i=3
`redo`
lang = ruby
i=4
输出
lang = scheme
i = 5
输出

评分

参与人数 1星屑 +15 收起 理由
guoxiaomi + 15 塞糖

查看全部评分

灯笼菜刀王 发表于 2018-7-7 19:18:47
本帖最后由 灯笼菜刀王 于 2018-7-7 19:20 编辑

next是跳过这次循环, 然后进行下次循环.  就等于你数组里第三次循环是直接跳过了, 所以结果就不显示 3和数组第三位的字符串.

redo是重新执行这个循环的该次迭代,无视循环条件.   就等于循环到数组第三位的时候(i=3), 它又再次执行一次(i+1), 然后这次因为i不等于3, 就跳过这个条件执行下面的结果, 于是输出 4和数组第三位字符串.

如果你的条件是 i>3, 那循环到最后一个单位的时候,  i一直满足条件, 就会一直执行redo, 无限循环了

评分

参与人数 2星屑 +15 +1 收起 理由
guoxiaomi + 15 认可答案
myaa475 + 1 认可答案

查看全部评分

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-24 02:18

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表