最初にString
と説明する方が簡単です。
は、我々はこれを行うとしましょう:たまたま
var v:* = null;
var s:String = v;
何? s
はnull
になります。 null
は、タイプString
の参照に対して有効な値です。代わりに、今
:今、何が起こる
var v:* = null;
var s:String = String(v);
? s
は"null"
になります。明示的にタイプString
のオブジェクトを要求していますが、null
のタイプはNull
なので、変換する必要があります。 null
はString
に変換され、"null"
です。
123.45
をString
に変換すると、"123.45"
になります。けっこうだ。
次に、Object
を試してみましょう。
var v:* = null;
var obj:Object = v;
obj
null
になります。今
: - null
ではありません。ここ
var v:* = null;
var obj:Object = Object(v);
は再び我々は、明示的にタイプObject
の値を指すようにobj
のために求めています。 null
をObject
に変換すると、空のオブジェクトになります。
さんが再び見てみましょう。ここでは
var s:String = null;
タイプString
のs
がタイプNull
の値null
を指しているの参照を。
参照String
、値Null
。
String
基準は、Null
値を取ることができ、それは(すなわち0
に)変換されなければならないNumber
にnull
を割り当てるときNumber
参照ので、Null
値を取ることができません。
var n:Number = Number(null); // 0
参考文献と値の面では本当に役立ちます。
キャストは参照のためのキャストであることを覚えておくと、変換は値です。 Object(value)
は変換です。 (value as Object)
はキャストです。
最後に、ユーザー定義型を試してみましょう。その後
class Person {}
:あなたが期待するよう
var person:Person = null;
はここperson
は、null
になります。
しかし:
var person:Person = Person(null);
person
は再びnull
になります!私たちはPerson
を求めましたが、Null
があります。どうして?
値null
はPerson
に変換できません。このような場合、結果は目的のタイプのデフォルト値になります。 Person
のデフォルト値はnull
です。
これはNumber
にも変換されています。
var n:Number = Number("123.45");
n
123.45
になります。
var n:Number = Number("The quick brown fox, period.");
n
は、NaN
となる。
文字列"The quick brown fox, period."
はNumber
に変換できないため、Number
のデフォルト値はNaN
です。これは、null
をNumber
に変換し、0
とする前の例とは対照的です。
私は続けることができます。
疑問がある場合は、as
オペレータを使用してください。value as Type
は基本的にvalue is Type ? value : null
になります。覚えておく複雑なルールはありません。 1つのタイプの値を別のタイプの値に変換する場合にのみ、Type(value)
を使用してください。
簡易回答?それはフラッシュなので、フラッシュは悪いです。後括弧付きの型を書くことは新しいオブジェクトを宣言しており、コピーまたは再解釈型キャストのコンストラクタパラメータとしてnullを渡しています。基本的にvar o = new Object(null);と同じです。あなたはまだオブジェクトを作成しています。 –
あなたは@AscensionSystemsの半分です。 Objectを作成していますが、結果が同じであっても 'new Object()'を呼び出すのと同じではありません。理解しておくべき最も重要なことは、 'Object(something)'は型キャストではないということです。*オブジェクトの* Object値*を返そうとする、 'Object'と呼ばれるトップレベル関数*を呼び出します。そして、それが分かるように、 'null'のObject値は空のObjectです。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/package.html#Object() – weltraumpirat
実際にnullとundefinedが何であるかを理解する必要があります。 Nullは、変数が宣言されていても値を持たない場合です。変数が宣言されていない場合は未定義であり、コンパイラエラーが発生します。トレース(null ==未定義); // trueとtraceを出力します(null ===未定義)。 // Outputs false –