ActionScript 3.0 での 型 を考える

数値型
NumberしかなかったAS2の頃と比べると数値型が厳密になりました。
以下に数値型クラスについてまとめました。


uint
32ビットの符号なし整数
0 〜 4294967295 (0 〜 2^31-1)

var hoge: int;
trace(hoge);    // 0 を出力 (デフォルト値)
hoge = 1.9;     // 小数点を格納
trace(hoge);    // 1 を出力 (小数切捨て)
hoge = -1;      // 負の数値を格納
trace(hoge);    // 4294967295 を出力 (オーバーフロー)


int
32ビットの符つき整数
−2147483648 〜 2147483647 (-2^31 〜 2^31-1)

var hoge: uint;
trace(hoge);    // 0 を出力 (デフォルト値)
hoge = 1.9;     // 小数点を格納
trace(hoge);    // 1 を出力 (小数切捨て)
hoge = -1;      // 負の数値を格納
trace(hoge);    // -1 を出力

Number
浮動小数点が扱える
つまり、uint や int に小数点がついた型

var hoge: Number;
trace(hoge);    // NaN を出力 (デフォルト値)
hoge = 1.9;     // 小数点を格納
trace(hoge);    // 1.9 を出力
hoge = -1;      // 負の数値を格納
trace(hoge);    // -1 を出力

CやC++と、AS2における Number の扱いが大変だったなぁ、曖昧すぎて


当然だが、数値型に文字列を入れると

var hoge: Number;
hoge = "hoge";      // 文字列を格納 (コンパイルエラー)

コンパイルエラーになる


おまけ
「やっべぇ、どんな型が入るかわかんねぇーゎ」と思ったら

var hoge: *;

trace(hoge);            // undefined を出力 (デフォルト値)
trace(typeof(hoge));    // undefined を出力

hoge = 1.9;             // 小数点を格納
trace(hoge);            // 1.9 を出力
trace(typeof(hoge));    // number を出力

hoge = -1;              // 負の数値を格納
trace(hoge);            // -1 を出力
trace(typeof(hoge));    // number を出力

hoge = "hoge"           // 文字列を格納
trace(hoge);            // hoge を出力
trace(typeof(hoge));    // string を出力

*で宣言しよう。様々な型に化けます。
だからって全ては、、ぃぁぃぁぃぁおイタしますゎ


型を宣言した時点で、それだけの数値が扱えるメモリを確保するので、整数のみならNumberではなくintで宣言を
さらに負の数値を扱わない場合はuintで宣言して効率化をしてください。