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|

trackback

http://tmdf.net/blog/20091202_as3boolean.html/trackback

comments(0)

POST NEW COMMENT

  • name:*
  • e-mail:*

    The content of this field is kept private and will not be shown publicly.
  • website:
  • comment:*

    Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code>
    Lines and paragraphs break automatically.

Photo

PROFILE

森田 考陽 [Takaaki Morita]
Twitter: @tmdf
Other: mtdf.net

Designer / Programmer

RECENT POSTS

MONTHLY ARCHIVES