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で宣言して効率化をしてください。