作者lg31cm (我住5F)
看板Ruby
標題symbol 真是難以理解呀...
時間Mon Dec 17 00:21:53 2007
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
1F:推 godfat:該從何說起呢...你的理解方向錯誤了 12/17 00:25
2F:→ godfat:attr_accessor 是 meta-programming, 不同instance當然不同 12/17 00:26
3F:推 poga:把attr_accessor直接想成 替那個class加上那個屬性的getter及 12/17 13:24
4F:→ poga:setter就好了. 參數只是取它的名字 12/17 13:24
5F:推 zhadow:foo的:abc 和 foo.abc 是不同的 12/17 14:44