保存と復帰
 自分で作ったテーブル周りのサンプルを使ってて、バグに気がつきました。テーブルにboolean型の値が格納されている場合にエラーが出ることと、格納されてる値の型情報が失われていることです。前者はすぐに対応できるんですよ。テーブルを文字列化する際にちゃんとtostring()してやればいいだけなので。問題は後者です。たとえばboolean型が複数個格納されているテーブルをCSVで保存し、復帰させたあと、復帰前のテーブルと復帰後のテーブルで値を逐一比較した場合、全部不一致になってしまうわけです。true == "true"はtrueになりませんからね。なので、何とかして型情報を正しく保存する必要があります。
 ひとつ思いついたのは、保存する時に格納する値の前にカッコで型情報を記述し、復帰させる時にstring.gmatch()で型情報を取り出す方法。たとえば{1,"2",true}というテーブルがあれば、それぞれを"(number)1","(string)2","(boolean)true"と変換するのです。これならいけそうですね。

 あと、自作サンプルではテーブル内にテーブルが含まれている場合もエラーが出ます。これも何とかしたいですね。
[PR]
by lyricist_m | 2009-07-23 18:39 | NSLua
<< ウィンドウを常に手前に表示する アニメーション応用 >>