作者EvilBeauty (邪恶美丽)
看板Ruby
标题[问题] 关於 类别方法 attr_reader
时间Mon Nov 2 13:58:39 2015
你们好,
我想请问,在ruby里面的attr_reader ..等方法。
如以下范例:
-----------------------------------------------
class Person
attr_accessor :name
def initialize(name)
@name = name
end
end
-----------------------------------------------
为何 定义 attr_accessor时,会知道 :name 这个变数是指向 实例变数@name呢?
如果在类别里面定义了 其他变数,如类别变数,全域变数 等。
attr_accessor还会知道是指向@name吗?
还是在ruby里面,存取器一定就是预设是 实例变数?
谢谢你们了,查了资料还是不太懂..
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 117.56.105.46
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Ruby/M.1446443921.A.C18.html
1F:推 AIGecko: Ruby可以动态定义方法 其实使用属性存取也是定义方法 11/02 15:21
2F:→ AIGecko: 可以想像成eval("def #{sym}=(val);@#{sym}=val;end") 11/02 15:23
3F:→ AIGecko: eval("def #{sym});return @#{sym};end") 上面写这行读 11/02 15:24
4F:→ AIGecko: 在attr_accessor中会定义name和name=(val) 11/02 15:26
5F:→ abc0: name? 11/06 12:44