看板 Ruby 關於我們 聯絡資訊
最近使用Ruby+SDL寫遊戲 不過有一些部分有點疑問 我曾經聽過Singleton 在類別只會建立一個實體時可以使用 (不一定要用 用了可以省去實體化的麻煩) 像是資料庫,設定,主遊戲之類的類別都只有一個實體) 不過在include之後 使用實體方法要中間加上instance (以上都是沒問題的...) 不過 為了隱藏Singleton的事實 (就是說不用管是不是Singleton) 我想把instance的字消失 於是就會變成 class C include Singleton def initialize @value end def func return @value end def self.func self.instance.func end end 於是直接當成類別方法呼叫了 使用 C.func 取代 C.instance.func 不過若是方法很多這樣一一定義會很麻煩 不知道有沒有什麼方法可以大量定義 因為引數和方法名都不會變 其實我也有個解決方法 只是我不確定會不會很奇怪 (以自己角度?以大家角度?) 就是使用類別變數當實體變數用 不需要產生實體 class C @@value def self.func return @@value end end 這種寫法我也不知道該怎麼解釋 能解決問題倒是真的 或許只要能解決問題+能讓人看懂就好? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.36.115.205
mars90226:第一種問題在ruby中的解法應該是用method_missing 09/26 00:06
mars90226:而類別變數最好不要使用~因為很容易出錯~他的概念不是 09/26 00:07
mars90226:完全跟Java的static變數一樣,而是整個繼承體系的變數 09/26 00:07
hSATAC:ruby 不是內建 singleton 可用? 09/26 15:09
AIGecko:話說那些打算使用Singleton模組的類別都沒有繼承 09/26 16:05
AIGecko:不過類別變數的繼承BUG好像修好了 父類子類不會影響 09/26 16:06