AS3 のオブジェクトは基本的には Object 型(またはそのサブクラス)で表されますが、例外となる型が3つあります。今回はその3つの紹介です。
* (アスタリスク)
* は「型指定なし」という型情報を指定するときに使います。つまり型の指定を省略したときと同じになります。
public var foo:*; // 型指定なし public var bar; // こちらも * と同じ扱い
だとすると * なんて付けない方が楽そうですが、何も無いと、こんどは付け忘れたのか本当に型指定を省略したかったのかが分からなくなってしまいます。ですので、きっちりとコードを書くのが趣味の人は * を、型なんてそもそも気にする気の無い人は何も無しを選択するのがよいでしょう。
「型指定なし」で宣言した変数には、コンパイル時に型チェックが起きません(当たり前ですが)。そのため、とりあえずエラーが出るまでは使っちゃおう、というずぼらな使い方ができます。動的言語ならではの使い方ですね。
ただし、実行時には何らかの値をもつわけですから、いずれにせよ実行時には型チェックが行われます。
また、型指定なしにすると Object 型では使用できない値、すなわち undefined を使うことができます。
void
void が持つ値は一つだけで undefined です。void は関数の戻り値を指定する際にしか使用できません。
public function foo():void { // return なし }
戻り値がそもそも存在しないので値が undefined というわけです。
Null
Null が持つ値も一つだけで null です。Null はクラスと関連付けられていないため、変数等の型指定には使用できません。
null は Object 型への参照が値を持たないことを示します。初期化されていない Object 型の変数への参照は null になります。
null と比較すると undefined は値だけでなく型情報もないことを示す値であることが分かると思います。
例えば dynamic クラスで、存在しない属性を参照したときの値も undefined です(この場合も型情報のない点が共通になっています)。このように AS3 のような動的に属性の追加できる言語では null と undefined を区別できることが役立つケースもあるわけです。
Object と Null と void を合わせると AS3 の全ての値を持つことができます。
コメントする