Project1
标题:
我一直搞不懂 定义实例变量
[打印本页]
作者:
z2z4
时间:
2013-7-20 15:01
标题:
我一直搞不懂 定义实例变量
attr_reader :common_event_id
attr_accessor :fade_type
这2个 有什么区别
还有 定义实例变量 和非 定义实例变量 又是干嘛的
还有 发现 @这个 在没 定义实例变量 一样能用
$这个全局变量 好像 随便 什么字母 就可以 调用
作者:
晴兰
时间:
2013-7-20 15:55
提示:
作者被禁止或删除 内容自动屏蔽
作者:
精灵使者
时间:
2013-7-20 16:45
attr_accessor :abc 与
def abc
return @abc
end
差不多吧?
作者:
Password
时间:
2013-7-20 21:46
本帖最后由 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
作者:
DeathKing
时间:
2013-7-20 22:04
简单来说,因为实例变量只能在类内部访问到(面向对象的程序设计哲学)。然后为了操纵到这些实例变量,就需要通过类提供的方法来折衷地实现。
class A
def a=(v)
@a = v
end
end
o = A.new
o.a = 1 # 可以通过a=这个方法来设置实例变量@a
o.a # NameError, A中没有定义a方法
复制代码
但是,为每一个实例变量都这样弄太麻烦了,于是就提供了attr_系列方法。他帮你创建操纵这些实例变量的方法。
这样一说。你再看上面的帖子应该就能明白了。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1