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

Project1

 找回密码
 注册会员
搜索
查看: 1148|回复: 5
打印 上一主题 下一主题

关于循环体内赋值的问题。

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
65
在线时间
433 小时
注册时间
2007-5-1
帖子
993
跳转到指定楼层
1
发表于 2009-2-7 01:58:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
先看两段脚本:

loop do
x = rand(123)
break if x > 50
end
p x

出错,说是未定义变量x。

x = 0
loop do
x = rand(123)
break if x > 50
end
p x

通过,为什么……

以下是群里某位成员的解释:

循环-显示x(还在循环,x的数值在这时候还没大于50的话就一直在循环没有一个确定数值,所以无法赋值),所以 当显示 x的时候 因为 x还处于不断的循环状态`
那么 就无法确定x的确切值,所以就出错了`

因为在循环里条件分歧非实例类貌似会被无视- -`


理解不能……求详细点的解释,谢谢!


版务信息:本贴由楼主自主结贴~

嗯,不能浪费签名了,打广告。本人的悲剧作品:
坑化游戏《龙之影》      R剧《星空》     小游戏《剑与拳头》

Lv1.梦旅人

梦石
0
星屑
50
在线时间
93 小时
注册时间
2008-5-16
帖子
745
2
发表于 2009-2-7 02:19:35 | 只看该作者
判断式先执行,所以第一个写法,判断之前X没有定义
第2个写法,X先定义,然后进行判断。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
65
在线时间
433 小时
注册时间
2007-5-1
帖子
993
3
 楼主| 发表于 2009-2-7 02:44:47 | 只看该作者
以下引用★_茄孓于2009-2-6 18:19:35的发言:

判断式先执行,所以第一个写法,判断之前X没有定义
第2个写法,X先定义,然后进行判断。


呃……MS不是这样的,因为我试过在第一段脚本的循环体内写p 'a',结果执行了p 'a'然后出错,说明的确是执行了循环体里的内容。而且提示出错的行是最后的 p x

嗯,不能浪费签名了,打广告。本人的悲剧作品:
坑化游戏《龙之影》      R剧《星空》     小游戏《剑与拳头》
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
93 小时
注册时间
2008-5-16
帖子
745
4
发表于 2009-2-7 02:48:34 | 只看该作者
我想应该你应该去看看秀大的教程
类空间,对象空间那一章
我说的不是很明白
应该是两个x属于不同空间,所以不一样?
把x变为@x即可
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
46
在线时间
10 小时
注册时间
2007-5-27
帖子
2558

第1届Title华丽大赛新人奖

5
发表于 2009-2-7 02:59:46 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
65
在线时间
433 小时
注册时间
2007-5-1
帖子
993
6
 楼主| 发表于 2009-2-7 05:45:29 | 只看该作者
以下引用沉影不器于2009-2-6 18:59:46的发言:

只能说x的作用域只在loop...end内...

我确定了一下,ruby的局部变量作用域起始于声明处,结束于该声明所在的块、方法定义、类/模块定义的结尾,这里的loop...end就是块

[本贴由作者于 2009-2-6 19:06:12 最后编辑]


的确是作用域问题,没想到一个循环体也能把变量封装起来……

嗯,不能浪费签名了,打广告。本人的悲剧作品:
坑化游戏《龙之影》      R剧《星空》     小游戏《剑与拳头》
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2025-1-18 07:00

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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