Luaで定義したグローバル変数を獲得して、元通りにする場合

タイトルのようなことをするとき

double          luaGetAtai(
                // 値取得のテスト(誤)
lua_State       *L
)
{
        
        lua_getglobal(L, "ATAI");
        double  atai = lua_tonumber(L, -1);
        lua_settop(L, -1);
        return atai;
}

こうしておけばよいと思っていたが、うまくいかなかった。
最後に積み込むのは、わかっていたけど、
lua_settopで、マイナス指定しても、そのポジションを廃棄していないみたい。
積み込み数が増えていた……。
ので、調べて、以下のようにしてみた。

double          luaGetAtai(
                // 値取得のテスト(正)
lua_State       *L
)
{
        
        lua_getglobal(L, "ATAI");
        double  atai = lua_tonumber(L, -1);
        lua_remove(L, -1);
        return atai;
}

これでうまくいった。
lua_removeっていうのを走らせれば、完全に廃棄してくれるみたい。
いえい。


しかし、今まで、勘違いして使っていたよ……lua_settop。


http://d.hatena.ne.jp/sansuido/20080318/p9
で、lua_settopをガンガン使っているけど、
積み込みが、戻り値の数よりもオーバーしていた箇所は、
Lua側で、自動的に廃棄してくれている……と思う。
たぶん……。


プログラミングのことを書いていても需要ないのかな……とよく思うけど、
Permalinkを見ると、たまにgoogleとかで調べてきてくれてる人がいる、わあい。


Luaは、日本のサイトで、情報がまだまだ少ない。
初めのころは、本当に訳がわからなくて、いろいろなサイトを検索しては、模倣して調べていた。
本当にすごいことが出来るので、もっと流行って欲しいな〜。


LuXの仕様を今月中に固めてupしようかと思う。
試験的に作っているゲームを完成させる。


関数リファレンスのページも作る予定。
現在の関数の数は、63個。
もっと、増えそうかも。
一部、名前の気に入らないのがあるので、ざっと見なおしてみる。