幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1676|回复: 7

这次问RUBY程序

[复制链接]

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
发表于 2005-1-11 23:30:08 | 显示全部楼层 |阅读模式
ruby> c=0
   0
ruby> for i in 0..4
    |   print i
    |   if i == 2 and c == 0
    |     c = 1
    |     print "\n"
    |     retry
    |   end
    | end; print "\n"
012
01234
   nil

为什么下面这段会输出01234呢?
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复

使用道具 举报

carol3 该用户已被删除
发表于 2005-1-12 01:05:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

0

主题

7

帖子

143

积分

③业余

积分
143
发表于 2005-1-12 01:51:33 | 显示全部楼层
我没有留意到Ruby里还有retry这个命令,但它既然存在,我们可以通过实验搞清楚它的作用
retry的作用是可以令for循环中的“计数器”(也就是变量i)回归初始值。拿这个例子讲
ruby> c=0
   0
ruby> for i in 0..4
    |   print i
    |   if i == 2 and c == 0
    |     c = 1
    |     print \"\\n\"
    |     retry    #当程序运行到这里时,i会重新变成0,这时for已循环了3次,会输出012
    |   end
    | end; print \"\\n\"  #当程序运行到这里时,这时for又循环了5次,会输出01234
012
01234
#当i第一次变成2时,if内的语句在以后的5次循环中不会再运行。为什么会这样?请你自己考虑吧~[em08](提示:注意那个变量c)
回复 支持 反对

使用道具 举报

5

主题

38

帖子

345

积分

④见习

天空也有传说

积分
345
发表于 2005-1-12 18:41:59 | 显示全部楼层
呵呵~~看出来了,在if语句里已经吧c改成1了
最快的进步方法就是向前辈们学习
回复 支持 反对

使用道具 举报

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
 楼主| 发表于 2005-1-13 23:14:46 | 显示全部楼层
谢谢,不知何时才有你的编程能力
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复 支持 反对

使用道具 举报

carol3 该用户已被删除
发表于 2005-1-14 00:59:01 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
 楼主| 发表于 2005-1-14 01:13:30 | 显示全部楼层
学而不思则如何? 非也 学而不实践则如何?非也

只是现在能力还未到位,只好多问。
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复 支持 反对

使用道具 举报

2

主题

6

帖子

19

积分

②入门

积分
19
发表于 2005-12-10 18:16:12 | 显示全部楼层
retry 将计数器回归初始值
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2025-6-25 16:38 , Processed in 0.010937 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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