[問題] Singleton

看板Ruby作者 (壁虎貓耳控)時間12年前 (2012/09/25 23:37), 編輯推噓1(105)
留言6則, 3人參與, 最新討論串1/3 (看更多)
最近使用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

09/26 00:06, , 1F
第一種問題在ruby中的解法應該是用method_missing
09/26 00:06, 1F

09/26 00:07, , 2F
而類別變數最好不要使用~因為很容易出錯~他的概念不是
09/26 00:07, 2F

09/26 00:07, , 3F
完全跟Java的static變數一樣,而是整個繼承體系的變數
09/26 00:07, 3F

09/26 15:09, , 4F
ruby 不是內建 singleton 可用?
09/26 15:09, 4F

09/26 16:05, , 5F
話說那些打算使用Singleton模組的類別都沒有繼承
09/26 16:05, 5F

09/26 16:06, , 6F
不過類別變數的繼承BUG好像修好了 父類子類不會影響
09/26 16:06, 6F
文章代碼(AID): #1GOS_379 (Ruby)
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
1
1
完整討論串 (本文為第 1 之 3 篇):
1
6
1
1
文章代碼(AID): #1GOS_379 (Ruby)