Project1

标题: [已解决]理解self. 出现的问题,用实例变量测试 [打印本页]

作者: miantouchi    时间: 2019-3-28 13:40
标题: [已解决]理解self. 出现的问题,用实例变量测试
本帖最后由 miantouchi 于 2019-3-28 20:08 编辑

self 当前方法的执行对象本身。
根据F1文档理解,我把self理解是当前类的实例,
可能我写的能简单粗暴点
因为也没啥太多脚本基础。大神见谅。
但是就大体这个意思,把self都换成这个实例变量看看,结果出错了。
那有没有另外方法?打印出,
用xp显示结果:"中国","中国",“nil”
用VA显示结果:"中国","中国","中国"

class A
  def  a
    p "中国"
  end
  
  def b
    p self.a
  end
end

s = A.new
s.a
s.b
这个是我自己写的,self.a 等价于 s.a,我就是想把脚本不用self.来写换种方式来理解!!!
希望大家都来探讨探讨,因为新手对self理解不深,怎么弄都感觉陌生,用着就是个字面意思!

原版.png (56.9 KB, 下载次数: 9)

原版.png

改成.png (62.37 KB, 下载次数: 11)

改成.png

作者: 真·可乐    时间: 2019-3-28 14:05
本帖最后由 真·可乐 于 2019-3-28 14:07 编辑



试试这样
  1. s1 = A.new
  2. s2 = A.new
  3. p s1 == s2
复制代码

会返回false

下面同理

在进入Scene_Map时会生成一个 Window_Message的实例,相当于 s1
s1初始化时定义的 @message_window ,相当于 s2
在s1中调用self,指s1,而并不是s2
出错的原因:
s1在初始化时生成新的Window_Message实例s2
s2在初始化时生成新的Window_Message实例s3
s3在初始化时生成新的Window_Message实例s4
s4在初始化时........
无穷尽





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