luaのシングルトン


lua勉強中。

luaってスクリプト毎にメモリ常駐なの? なんなの? どうなってるの?
って位luaを知らないので、とりあえず常駐かつ一つしか保証されないもの=シングルトンが欲しいという事で、
luaでシングルトンを書くにはのメモ。

SINGLETONS IN LUA

うむ。今の俺にはまだちゃんと理解できぬ。
きっと追記有り
↓↓↓↓↓

6時間後追記

こんな感じになりました


Singleton = {}

local _instance = nil

-----------------------------------------------------------------------------
-- メンバ変数初期化
-- @note メンバ変数はここに追加する
--
-----------------------------------------------------------------------------
function Singleton:initialize()
    self._hoge = "hoge"
    self._piyo = "piyo"
 end

function Singleton.getInstance()
    if not _instance then
        _instance = Singleton;
        _instance:initialize()
        setmetatable(_instance, { __index = Singleton })  
    end

    return _instance
end

function Singleton:getHoge()
    return self._hoge
end

function Singleton:getPiyo()
    return self._piyo
end

function Singleton:new()
    print('Singleton cannot be instantiated - use getInstance() instead');
end

return Singleton

参考サイトでは無名関数(?)でgetInstance内にメソッド書く形式だったけど、
外に出したかったんで

setmetatable(_instance, { __index = Singleton })  

で外で定義できるようにしました。

なんか、もう一段階コンストラクタ周りを上手く呼び出せる気がするけど、
今の知識ではこれが限界。

luaの本を読もう、、

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <img localsrc="" alt="">