Project1

标题: 谁能帮忙详细的解释下self用法? [打印本页]

作者: liu3124493    时间: 2013-7-23 20:56
标题: 谁能帮忙详细的解释下self用法?
本帖最后由 liu3124493 于 2013-7-23 21:52 编辑

self 是表示自身对象的伪变量??看了帮助里面 对这些个理解不是很透,能帮忙举例或解释下吗?十分感谢,还有,是不是遇到语法上的障碍都得发一次贴啊???没一个更方便的地方问了吗?
作者: 认真的学    时间: 2013-7-23 21:07
self是对自身的引用,把它理解成【自己】就好了= =
作者: liu3124493    时间: 2013-7-23 21:11
认真的学 发表于 2013-7-23 21:07
self是对自身的引用,把它理解成【自己】就好了= =

嗯 我知道是自己的意思,但是具体的作用我不太明白。有个例子就好多了
作者: 认真的学    时间: 2013-7-23 21:17
liu3124493 发表于 2013-7-23 21:11
嗯 我知道是自己的意思,但是具体的作用我不太明白。有个例子就好多了

比如RM里面的窗口,有self.contents,意思就是该窗口自己的contents属性。
另外,如果方法名的前面带self,那么这个方法就是类方法。
作者: liu3124493    时间: 2013-7-23 21:30
认真的学 发表于 2013-7-23 21:17
比如RM里面的窗口,有self.contents,意思就是该窗口自己的contents属性。
另外,如果方法名的前面带self ...

content前面不加self会怎么样?如果content就是在这窗口下使用的。没了self难道就不是该窗口的属性了吗?
作者: 铅笔描绘的思念    时间: 2013-7-23 21:57
标题: 潜水党怒刷存在感
本帖最后由 铅笔描绘的思念 于 2013-7-23 22:01 编辑

在看爪哇this的时候随顺便看了下ruby self
。。self可以是全局变量 存在于object中
p self #main
p self.class# Object
代表Object的默认对象main。。
self也可以是一种全局方法(?)
在class和module的定义中,self代表这个class或这module对象。。
如果在一个类中某个方法中调用了self。。。那么就是代表这个类的这个方法。。

如果在某个单例对象中就代表这个单例对象
(ps:单例方法是针对某个对象添加的方法)

window = Window_Base.new
def window.dispose
  p self # => 代表window这个单例对象
end
self存在于单例变量中明显和存在于实例方法中不同。。
好了大概就这样
作者: SuperMario    时间: 2013-7-24 01:25
首先你调用一个方法,肯定是对某个实例进行调用(模块也视为特殊的实例),self就是代表被调用方法的实例本身了。
另外,method= 这种方法在类内部调用需要加self,否则会被解释成赋值语句(对局部变量method赋值)。
作者: Sion    时间: 2013-7-24 10:17
本帖最后由 Sion 于 2013-7-24 10:18 编辑

补充楼上,还有方法名前加self
在类中称为类方法
  1. class A
  2.   def self.test_a
  3.     p 1
  4.   end
  5. end
复制代码
可以在任何位置调用:
  1. A::test_a
复制代码
模块里这样定义的叫公共方法 public method
  1. module B
  2.   def self.test_b
  3.     p 2
  4.   end
  5. end
复制代码
它等价于
  1. module B
  2.   module_function
  3.   def test_b
  4.     p 2
  5.   end
  6. end
复制代码
或者
  1. module B end
  2. class << B
  3.   def test_b
  4.     p 2
  5.   end
  6. end
复制代码
也可以在模块外随意调用:
  1. B.test_b
复制代码

作者: 芯☆淡茹水    时间: 2013-7-24 10:51
其实还不如说点实际的用法,
比如,制作某些单键开关
switch = true
然后下面开闭开关时
switch != self
作者: 上贺茂润    时间: 2013-7-24 11:27
self变量是一个系统定义的变量,用来在某些表达式里指代做出动作的一方,self.可以跟很多属性,在脚本batter里用于计算战斗的时候可以用self做很多修改,另外也可以跟上武器等属性来做类似于装备的镶嵌,升级,打孔等脚本%




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