查看: 3622|回复: 6

[已经过期] 默认脚本疑问:方法里有没定义的局部变量

[复制链接]
梦石
0
星屑
65
在线时间
75 小时
注册时间
2008-5-25
回帖
35
发表于 2012-2-2 20:02:01 | 显示全部楼层 |阅读模式

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

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

×
不带$\@的变量应该只能在函数内部引用吧,但是看默认脚本发现有些地方不对劲
Window_Base第23行左右
  def dispose
    contents.dispose unless disposed?
    super
  end
contents查F1是window类的一个属性,但是这里是局部变量,根本没定义吧,难道不应该是@contents.dispose unless disposed?
梦石
0
星屑
275
在线时间
1373 小时
注册时间
2005-10-16
回帖
5038

贵宾

发表于 2012-2-2 20:04:25 | 显示全部楼层
本帖最后由 亿万星辰 于 2012-2-2 20:04 编辑

如果你只写了contents,那么会有这么几种情况,首先看是不是局部变量,如果不是,会去找是不是有一个方法叫contents,也就是说此时等价于self.contents
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复

使用道具 举报

梦石
0
星屑
65
在线时间
75 小时
注册时间
2008-5-25
回帖
35
 楼主| 发表于 2012-2-2 20:43:21 | 显示全部楼层
亿万星辰 发表于 2012-2-2 20:04
如果你只写了contents,那么会有这么几种情况,首先看是不是局部变量,如果不是,会去找是不是有一个方法叫 ...

查F1contents是列在属性里的,不是方法里的
回复

使用道具 举报

梦石
0
星屑
275
在线时间
1373 小时
注册时间
2005-10-16
回帖
5038

贵宾

发表于 2012-2-2 21:48:00 | 显示全部楼层
本帖最后由 亿万星辰 于 2012-2-2 21:50 编辑

好吧,你要这么说的话……
contents 是 self.contents 在当前类中调用时的一种简略写法。

class C
  def abc
    return 3
  end
  def go(step)
    return abc + step
  end
end

这个C::go方法里的abc你是如何理解的?
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复

使用道具 举报

天仙

梦石
0
星屑
720
在线时间
184 小时
注册时间
2008-4-15
回帖
4872

贵宾

发表于 2012-2-3 10:24:51 | 显示全部楼层
本帖最后由 雪流星 于 2012-2-2 20:27 编辑

contents 是 Window_Base 繼承自 Window 的屬性(可讀寫)
F1 裡面有寫
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复

使用道具 举报

梦石
0
星屑
65
在线时间
75 小时
注册时间
2008-5-25
回帖
35
 楼主| 发表于 2012-2-3 12:14:51 | 显示全部楼层
本帖最后由 doubt 于 2012-2-3 13:00 编辑
亿万星辰 发表于 2012-2-2 21:48
好吧,你要这么说的话……
contents 是 self.contents 在当前类中调用时的一种简略写法。


方法是可以省略self.,但是属性不可以吧?




好吧,我错了,好像属性也是可以的。
话说这里怎么认可答案?
回复

使用道具 举报

梦石
0
星屑
5615
在线时间
2571 小时
注册时间
2011-9-27
回帖
1059

极短23参与开拓者

发表于 2012-2-3 12:35:20 | 显示全部楼层
Windows 中一定有一句
attr_accesor :contents

看不到,也能猜到。
从平淡走向更平淡。
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部