本帖最后由 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 输出 |
本帖最后由 灯笼菜刀王 于 2018-7-7 19:20 编辑 next是跳过这次循环, 然后进行下次循环. 就等于你数组里第三次循环是直接跳过了, 所以结果就不显示 3和数组第三位的字符串. redo是重新执行这个循环的该次迭代,无视循环条件. 就等于循环到数组第三位的时候(i=3), 它又再次执行一次(i+1), 然后这次因为i不等于3, 就跳过这个条件执行下面的结果, 于是输出 4和数组第三位字符串. 如果你的条件是 i>3, 那循环到最后一个单位的时候, i一直满足条件, 就会一直执行redo, 无限循环了 |
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2024-11-24 02:18
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.