2007年 02月 19日

AS3 の undefined

型指定されていない変数のみに値 undefined を割り当てることができます。値 undefined をデータ型が指定されている変数に割り当てようとすると、Flash Player は値 undefined をそのデータ型のデフォルト値に変換します。Object データ型のインスタンスのデフォルト値は null です。つまり、undefined を Object インスタンスに割り当てようとすると、Flash Player は値 undefined を null に変換します

http://livedocs.adobe.com/flex/2_jp/docs/00001826.html

へー……

var num:Number;
var str:String;
var obj:Object;
var foo:*;

log(num, str, obj, foo);
#[Number NaN]
#[null null]
#[null null]
#[void undefined]
// Object に代入していたのを変えた。
package {
	import flash.utils.*;
	import flash.external.ExternalInterface;

	public function log(... args):void {
		for (var i:uint = 0; i < args.length; i++) {
			var className:String = getQualifiedClassName(args[i]);
			var l:String    = <>#[{className} {String(args[i])}]</>.toString();
			trace(l)
			ExternalInterface.call("console.log", l);
		}
	}
}

今はとりあえず上のやつを log.as で保存して他にファイルから import log; してる。package 名どうするのがいいんだろう。

type はいちおう予約語だから使わないほうがいいぜってせかんどらいふさんに言われたので log 関数をちょっと変えた

import log; しなくても動くよ!っていわれた! なんでだろう。