Booleanの型変換
2009.12.2 水曜日
trick7「hoge=”true”を受け取る時」を読んでいたのに、同じミスを最近したので書いておきます。
XMLファイル保存時など、Boolean型のデータをそのまま書き出すと文字列の “true” か “false” になりますが、読み込み時に、この文字列を強制型変換すると “true” “false” のどちらもtrueになってしまいます。読み込む時は強制型変換はせずに、文字列の等価性(==)を見るようにしましょう。
以下はキーボードが押された場合に、同階層のSample.xmlを読み込んで、trueかfalseを強制Boolean型変換かStringの判定で出力するサンプルコード。
//Sample.xml <data> <a>true</a> <b>false</b> </data>
//Main.as
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
public class Main extends MovieClip {
public function Main():void {
//リスナー登録
stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyDown);
}
//キーボードが押された場合
private function KeyDown(e:KeyboardEvent):void {
//XMLファイルの読み込み
var request:URLRequest = new URLRequest("Sample.xml");
var loader:URLLoader = new URLLoader(request);
loader.dataFormat = "text";
loader.addEventListener(Event.COMPLETE, Output);
//出力
function Output(e:Event):void {
var xml:XML = new XML();
xml = XML(loader.data);
//Boolean型で処理
if (Boolean(xml.a)) trace("Boolean A:true");
else trace("Boolean A:false");
if (Boolean(xml.b)) trace("Boolean B:true");
else if (Boolean(xml.b)) trace("Boolean B:false");
//String型で処理
if (xml.a == "true") trace("String A:true");
else trace("String A:false");
if (xml.b == "true") trace("String B:true");
else trace("String B:false");
}
}
}
}
Posted by tmdf|ActionScript