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個。
もっと、増えそうかも。
一部、名前の気に入らないのがあるので、ざっと見なおしてみる。