设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2702|回复: 2
打印 上一主题 下一主题

[已经解决] [已解决]理解self. 出现的问题,用实例变量测试

[复制链接]

Lv4.逐梦者

梦石
0
星屑
14571
在线时间
2191 小时
注册时间
2019-1-24
帖子
1123

R考场第七期纪念奖

跳转到指定楼层
1
发表于 2019-3-28 13:40:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 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, 下载次数: 11)

原版.png

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

改成.png

Lv4.逐梦者

梦石
2
星屑
13353
在线时间
2299 小时
注册时间
2011-6-4
帖子
618
2
发表于 2019-3-28 14:05:54 | 只看该作者
本帖最后由 真·可乐 于 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在初始化时........
无穷尽

点评

哦,是这样,那如果想调用Scene_Map时会生成一个 Window_Message的实例s1,就务必要用self.来调用了, 如果像我那么弄就是指别的s某值了。  发表于 2019-3-28 14:10

评分

参与人数 1星屑 +80 收起 理由
RyanBern + 80 认可答案

查看全部评分

BUG反馈请加QQ 529283039
水友群 917854767

回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-11 01:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表