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

Project1

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

[已经解决] 脚本中如何 调用其他 方法中的变量?

 关闭 [复制链接]

Lv2.观梦者

梦石
0
星屑
368
在线时间
94 小时
注册时间
2008-1-13
帖子
24
跳转到指定楼层
1
发表于 2009-9-16 03:08:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 jay999 于 2009-9-17 16:56 编辑

脚本中如何 调用其他 方法中的变量?
1.比如一个类里的一个方法a要调用另一个方法b的变量如何调用?调用其他类的变量呢?
2.运算符::是什么意思?

谢谢楼下几位的回答 尤其是紫苏 很详细

Lv1.梦旅人

梦石
0
星屑
64
在线时间
4352 小时
注册时间
2007-8-31
帖子
1982
2
发表于 2009-9-16 03:42:49 | 只看该作者
从外部引用常量要用到“::”运算符。
我真是王小二过年,一年不如一年。目前正在寻找状态中,努力找回当初的动力!
“底蕴制作者”—asperta最新博客开通!以后将在这里更新制作进度报告!
我的作品官网:http://www.asperta.org/
ASPERTA世界论坛:http://bbs.asperta.org/


回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
3
发表于 2009-9-16 05:14:58 | 只看该作者
  • 姑且假设你说的“其它方法中的变量”是指局部变量……
    所谓的局部变量就是在一个局部范围内使用的变量,它的生命,或者说作用域仅仅在于局部,压根儿就不是用来在外部调用的,要在外部用的话,自然就应该使用这个“外部”范围内也存在的变量(实例变量 @、类变量 @@ 或全局变量 $)
    不过 Ruby 也并非完全不可能获取其它方法中的局部变量~我们可以获取那个方法的执行上下文环境,并保存下来,这样就可以在其它地方去访问属于这个上下文环境的局部变量了:
    1. def fn
    2.   a = 9999
    3.   $my_binding = binding
    4. end

    5. fn

    6. eval("p a", $my_binding)   # => 9999
    复制代码
    这就是 Ruby 的 binding 机制
    不过,访问其它上下文中的局部变量的前提是这个上下文存在过,所以你才能通过 binding 得到它的环境……而你说的在一个类的一个方法中调用另一个方法的变量,这“另一个方法”通常是没有调用过的,所以它的局部上下文没有产生。因此,这时你肯定应该使用作用域更大的变量——如果你的方法是实例方法,那就应该用实例变量;如果你的方法是类方法,那就应该用类变量

    至于你说的其它类的变量,还是指代不明……如果是说其它类的类变量,那么可以定义一个类方法,直接返回这个类变量即可;如果是说其它类的实例变量,那必须要生成类的实例,才能通过实例来访问这个实例变量
  • :: 是一个名字空间的修饰运算符。变量和函数都有定义了它的一个名字空间(正如文件有一个包含了它的文件夹),而在一个名字空间中要访问其它名字空间的变量/函数,就需要通过这个运算符来修饰该变量/函数的名字,比如 Math::PI,就是因为 PI 是在 Math 这个模块(名字空间)中定义的一个常量;Struct::Tms,就是因为 Tms 是在 Struct 这个模块中定义的类~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

彩色的银子

梦石
0
星屑
50
在线时间
190 小时
注册时间
2006-6-13
帖子
1361

贵宾

4
发表于 2009-9-16 11:00:36 | 只看该作者
借个地方问个问题eval的第2个参数是何意义?
-.-
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
21 小时
注册时间
2007-7-3
帖子
573
5
发表于 2009-9-16 11:17:23 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-9 01:27

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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