看板 Ruby 關於我們 聯絡資訊
恕刪
AIGecko:話說那些打算使用Singleton模組的類別都沒有繼承 09/26 16:05
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
mars90226:欸對了忘了說,這個應該不是bug,本來就是這樣設計的 09/26 19:03
AIGecko:突然覺得奇怪 我到底從哪裡看到修好的訊息... 09/26 20:56
AIGecko:話說那個 ||= 應該是nil時初始化吧 好像還有 &&= 09/26 20:59
mars90226:是阿,所以當你以為是初始化,其實卻改到父類別的變數~ 09/26 22:13
AIGecko:不過這些類別我也沒繼承 因為Singleton不太有繼承需要... 09/26 22:47
AIGecko:但是副作用還是要小心... 09/26 22:47
tomap41017:不是盡量不要用,是@@與@的差別吧,所以上一篇才說 10/06 18:09
tomap41017:改成@就更好囉~ 10/06 18:09