作者mars90226 (火星人)
看板Ruby
标题Re: [问题] Singleton
时间Wed Sep 26 19:02:58 2012
恕删
1F:→ AIGecko:话说那些打算使用Singleton模组的类别都没有继承 09/26 16:05
2F:→ AIGecko:不过类别变数的继承BUG好像修好了 父类子类不会影响 09/26 16:06
看到这个我又去实验一下
=== code ===
class C1
@@a = 1
def self.a
@@a
end
end
puts C1.a #=> 1
class C2 < C1
@@a = 2
def self.a
@@a
end
end
puts C2.a #=> 2
puts C1.a #=> 2
=== code ===
所以还是类别变数在同一个继承体系中还是同一个喔!
我是用Windows 7,ruby 1.9.3p0
结论就是:尽量不要用类别变数,会出现出乎意料的bug (用神奇的||=会更容易)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.226.131.107
3F:→ mars90226:欸对了忘了说,这个应该不是bug,本来就是这样设计的 09/26 19:03
4F:推 AIGecko:突然觉得奇怪 我到底从哪里看到修好的讯息... 09/26 20:56
5F:→ AIGecko:话说那个 ||= 应该是nil时初始化吧 好像还有 &&= 09/26 20:59
6F:→ mars90226:是阿,所以当你以为是初始化,其实却改到父类别的变数~ 09/26 22:13
7F:推 AIGecko:不过这些类别我也没继承 因为Singleton不太有继承需要... 09/26 22:47
8F:→ AIGecko:但是副作用还是要小心... 09/26 22:47
9F:推 tomap41017:不是尽量不要用,是@@与@的差别吧,所以上一篇才说 10/06 18:09
10F:→ tomap41017:改成@就更好罗~ 10/06 18:09