symbol 真是難以理解呀...

看板Ruby作者 (我住5F)時間16年前 (2007/12/17 00:21), 編輯推噓3(302)
留言5則, 3人參與, 最新討論串1/1
class Foo attr_accessor :abc def test puts :abc.object_id puts abc end end class Bar attr_accessor :abc def test puts :abc.object_id puts abc end end foo = Foo.new bar = Bar.new puts "call foo.test" foo.abc = 123 foo.test puts "call bar.test" bar.test 輸出 --------------------------------- call foo.test 288098 123 call bar.test 288098 nil --------------------------------- 從輸出看起來,bar & foo 的 :abc 有相同的object_id,但是 執行 foo.abc = 123 卻會寫到不同的地方,有沒有哪位先進 可以解釋一下...@@ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.124.121.196

12/17 00:25, , 1F
該從何說起呢...你的理解方向錯誤了
12/17 00:25, 1F

12/17 00:26, , 2F
attr_accessor 是 meta-programming, 不同instance當然不同
12/17 00:26, 2F

12/17 13:24, , 3F
把attr_accessor直接想成 替那個class加上那個屬性的getter及
12/17 13:24, 3F

12/17 13:24, , 4F
setter就好了. 參數只是取它的名字
12/17 13:24, 4F

12/17 14:44, , 5F
foo的:abc 和 foo.abc 是不同的
12/17 14:44, 5F
文章代碼(AID): #17PL2aWV (Ruby)