作者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