Project1

标题: 脚本中的self.是干吗用的 [打印本页]

作者: TERENCE    时间: 2008-3-21 01:00
标题: 脚本中的self.是干吗用的
可以详细说明脚本中的self.是干吗用的??

(可以的话举个实例)

THANKS!! [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 水迭澜    时间: 2008-3-21 02:36
该对象自身。
例如window_base里的self.x意思就是本窗口的X值
作者: 沉影不器    时间: 2008-3-21 03:22
提示: 作者被禁止或删除 内容自动屏蔽
作者: Iselia雪    时间: 2008-3-21 03:26
提示: 作者被禁止或删除 内容自动屏蔽
作者: 沉影不器    时间: 2008-3-21 03:39
提示: 作者被禁止或删除 内容自动屏蔽
作者: 禾西    时间: 2008-3-21 05:20
調用父類的函數……
作者: TERENCE    时间: 2008-3-21 05:43
以下引用Iselia雪于2008-3-20 19:26:20的发言:


以下引用沉影不器于2008-3-20 19:22:12的发言:

伪变量,不晓得算不算实例?


伪变量是啥意思?
假如制作一个有特殊效果的Sprite,以Rpg::Sprite为父类。
class ABC < RPG::Sprite
def initialize
super
self.x = 10
end
end
就是说在初始化时,把这个RPG::Sprite的子类的x坐标设为10,也就是ABC自己的X坐标等于10了。
通常这个东东都在一个class内部使用,修改此class的属性值,如是说。
以下引用水迭澜于2008-3-20 18:36:15的发言:

该对象自身。
例如window_base里的self.x意思就是本窗口的X值

调用父类的函数我已经知道了
若该class沒使用继承,self.可以使用!?
如果可以要怎么用??(举一个简单的例子)
作者: 沉影不器    时间: 2008-3-21 05:46
提示: 作者被禁止或删除 内容自动屏蔽
作者: 禾西    时间: 2008-3-21 06:04
class A
  def c
    p "c"
  end
end
class B < A
  def initialize
    super()
    self.c
  end
end
B.new

作者: 沉影不器    时间: 2008-3-21 06:09
提示: 作者被禁止或删除 内容自动屏蔽
作者: TERENCE    时间: 2008-3-21 06:15
以下引用禾西于2008-3-20 22:04:17的发言:


class A
def c
   p "c"
end
end
class B < A
def initialize
   super()
   self.c
end
end
B.new


看来要使用self. 该class必定要使用继承!!
那super( )在def initialize 才会用的到?
(super又是什么?)
作者: 水迭澜    时间: 2008-3-21 06:16
super,调用父类的同名方法……
任何方法内只要父类有同名方法都可以用……
建议先去看F1
作者: 沉影不器    时间: 2008-3-21 06:18
提示: 作者被禁止或删除 内容自动屏蔽
作者: 禾西    时间: 2008-3-21 06:19
super
調用父類同名方法方法
self.
是直接調用
看例子:
class A
  def initialize
    p "i"
  end
  def c
    p "c"
  end
  def d
    p "d"
  end
end
class B < A
  def initialize
    super()
    self.c
  end
  def c
    super()
  end
  def d
    self.c
  end
end
B.new
#=>"i"
#=>"c"
B.new.c
#=>c
B.new.d
#=>c
[LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: wy29    时间: 2008-3-21 10:14
提示: 作者被禁止或删除 内容自动屏蔽
作者: 沉影不器    时间: 2008-3-21 16:44
提示: 作者被禁止或删除 内容自动屏蔽
作者: 禾西    时间: 2008-3-21 16:53
其實怎麼說呢,我覺得self.的唯一用途就是繼承的時候調用父類方法而已……==

PS。早上看錯了……原來TERENCE問的是沒有繼承怎麼用……==|||剛起床果然很迷糊。
作者: 沉影不器    时间: 2008-3-21 16:59
提示: 作者被禁止或删除 内容自动屏蔽
作者: 神思    时间: 2008-3-21 17:15
以下引用禾西于2008-3-21 8:53:00的发言:

其實怎麼說呢,我覺得self.的唯一用途就是繼承的時候調用父類方法而已……==

PS。早上看錯了……原來TERENCE問的是沒有繼承怎麼用……==|||剛起床果然很迷糊。

不``self用处多在这里

class Orz
  def orz=(int)
    @orz = int
    @orz *= 9999
  end
  def display(int)
    # 如果这里用 orz = int 的话她会认为是为临时变量orz赋值。
    # 这个时候就需要
    self.orz = 2
    p @orz
  end
end
o = Orz.new
o.display
其实self我觉得跟C++的this差不多```至少我是这么理解的。。。。。。。

作者: 禾西    时间: 2008-3-21 17:51
多謝樓上兩位指教…… <(_ _)>||| 此帖的積分真是受之有愧
作者: 雷欧纳德    时间: 2008-3-21 18:00
其实就是指向自身的指针




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