Project1

标题: 默认脚本疑问:方法里有没定义的局部变量 [打印本页]

作者: doubt    时间: 2012-2-2 20:02
标题: 默认脚本疑问:方法里有没定义的局部变量
不带$\@的变量应该只能在函数内部引用吧,但是看默认脚本发现有些地方不对劲
Window_Base第23行左右
  def dispose
    contents.dispose unless disposed?
    super
  end
contents查F1是window类的一个属性,但是这里是局部变量,根本没定义吧,难道不应该是@contents.dispose unless disposed?

作者: 亿万星辰    时间: 2012-2-2 20:04
本帖最后由 亿万星辰 于 2012-2-2 20:04 编辑

如果你只写了contents,那么会有这么几种情况,首先看是不是局部变量,如果不是,会去找是不是有一个方法叫contents,也就是说此时等价于self.contents
作者: doubt    时间: 2012-2-2 20:43
亿万星辰 发表于 2012-2-2 20:04
如果你只写了contents,那么会有这么几种情况,首先看是不是局部变量,如果不是,会去找是不是有一个方法叫 ...

查F1contents是列在属性里的,不是方法里的
作者: 亿万星辰    时间: 2012-2-2 21:48
本帖最后由 亿万星辰 于 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你是如何理解的?
作者: 雪流星    时间: 2012-2-3 10:24
本帖最后由 雪流星 于 2012-2-2 20:27 编辑

contents 是 Window_Base 繼承自 Window 的屬性(可讀寫)
F1 裡面有寫
作者: doubt    时间: 2012-2-3 12:14
本帖最后由 doubt 于 2012-2-3 13:00 编辑
亿万星辰 发表于 2012-2-2 21:48
好吧,你要这么说的话……
contents 是 self.contents 在当前类中调用时的一种简略写法。


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




好吧,我错了,好像属性也是可以的。
话说这里怎么认可答案?
作者: 怕鼠的猫    时间: 2012-2-3 12:35
Windows 中一定有一句
attr_accesor :contents

看不到,也能猜到。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1