看板 Ruby 關於我們 聯絡資訊
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
godfat:該從何說起呢...你的理解方向錯誤了 12/17 00:25
godfat:attr_accessor 是 meta-programming, 不同instance當然不同 12/17 00:26
poga:把attr_accessor直接想成 替那個class加上那個屬性的getter及 12/17 13:24
poga:setter就好了. 參數只是取它的名字 12/17 13:24
zhadow:foo的:abc 和 foo.abc 是不同的 12/17 14:44