いくつかのプロパティを持つクラスがあるとしましょう:
public class MyClass {
public var fooProp:*;
public var barProp:Object;
}
実際に言えば、これらの違いは何ですか?barProp に割り当てることができない、後で fooProp に割り当てることができる変数の型はありますか?
いくつかのプロパティを持つクラスがあるとしましょう:
public class MyClass {
public var fooProp:*;
public var barProp:Object;
}
実際に言えば、これらの違いは何ですか?barProp に割り当てることができない、後で fooProp に割り当てることができる変数の型はありますか?
値を保持できるのは、型指定されていない変数のみですundefined
。型指定されていない変数は、型注釈がないか、型注釈にアスタリスク*
記号を使用する変数です。
以前のバージョンの ActionScript では、型注釈のない変数には自動的に Object データ型が割り当てられていました。これは、ActionScript 3.0 では当てはまりません。現在では、真に型指定されていない変数の概念が含まれています。型注釈のない変数は、型なしと見なされるようになりました。コードの読者に対して、変数を型なしのままにしておくことが意図されていることを明確にしたい場合は、型注釈に新しいアスタリスク (*) 記号を使用できます。これは、型注釈を省略することと同じです。次の例は、型なし変数を宣言する 2 つの同等のステートメントを示しています。
var x var x:*
値 undefined を保持できるのは、型指定されていない変数だけです。データ型を持つ変数に値 undefined を代入しようとすると、Flash Player または Adobe AIR は値 undefined をそのデータ型のデフォルト値に変換します。Object データ型のインスタンスの場合、デフォルト値は null です。これは、undefined を Object インスタンスに割り当てようとすると、Flash Player または Adobe AIR が値 undefined を null に変換することを意味します。
例として:
var t:* = undefined;
trace(t); // outputs: undefined
var t:Object = undefined;
trace(t); // outputs: null