查看: 2173|回复: 4

[已经过期] 我一直搞不懂 定义实例变量

[复制链接]
梦石
0
星屑
575
在线时间
1752 小时
注册时间
2008-11-7
回帖
1111
发表于 2013-7-20 15:01:49 | 显示全部楼层 |阅读模式

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

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

×
attr_reader   :common_event_id
attr_accessor :fade_type      

这2个 有什么区别


还有 定义实例变量  和非 定义实例变量  又是干嘛的


还有 发现 @这个 在没 定义实例变量 一样能用

  $这个全局变量 好像 随便 什么字母 就可以 调用
RPG魔塔:http://rpg.blue/thread-254429-1-1.html
魔塔2:http://rpg.blue/thread-303601-1-1.html
魔塔3: 制作中...MV
头像被屏蔽
梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
回帖
1577

开拓者

发表于 2013-7-20 15:55:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

精灵族の天使<

梦石
0
星屑
1712
在线时间
3039 小时
注册时间
2007-3-16
回帖
33092

开拓者贵宾

发表于 2013-7-20 16:45:17 | 显示全部楼层
attr_accessor :abc 与
def abc
return @abc
end
差不多吧?

点评

求accessor  发表于 2013-7-20 19:05
那是reader  发表于 2013-7-20 17:49
回复

使用道具 举报

送快递的水表员

梦石
10
星屑
5259
在线时间
3304 小时
注册时间
2012-6-27
回帖
7028

开拓者贵宾

发表于 2013-7-20 21:46:55 | 显示全部楼层
本帖最后由 Password 于 2013-7-20 21:48 编辑

attr_reader   :  read only # 只能读取,不能进行修改
attr_writer    : write only #只能进行修改,不能读取,不过貌似不常用
attr_accessor : both read and write #既能读取,也能进行修改

关于accessor和reader引发的不同,可以参见这帖:http://rpg.blue/thread-320728-1-1.html

点评

看了 这个帖子 有点明白 attr_reader 这个像怪的ID 就是无法修改的  发表于 2013-7-21 06:14
那没经过 实例变量 能干嘛 直接@a 这样 能修改能读?  发表于 2013-7-21 06:13
回复

使用道具 举报

梦石
0
星屑
1580
在线时间
1564 小时
注册时间
2008-7-30
回帖
4207

贵宾

发表于 2013-7-20 22:04:18 | 显示全部楼层
简单来说,因为实例变量只能在类内部访问到(面向对象的程序设计哲学)。然后为了操纵到这些实例变量,就需要通过类提供的方法来折衷地实现。
  1. class A
  2.   def a=(v)
  3.     @a = v
  4.   end
  5. end

  6. o = A.new
  7. o.a = 1 # 可以通过a=这个方法来设置实例变量@a
  8. o.a # NameError, A中没有定义a方法
复制代码
但是,为每一个实例变量都这样弄太麻烦了,于是就提供了attr_系列方法。他帮你创建操纵这些实例变量的方法。

这样一说。你再看上面的帖子应该就能明白了。

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部