3

ActionScript で、Date を Date にキャストし、それを Date 型の変数に代入すると TypeError がスローされることを発見しました。

var date : Date = Date(new Date(2012, 01, 01));

Error #1034: Type Coercion failed: cannot convert "Wed Aug 22 17:06:54 GMT+1000 2012" to Date.

これは明らかに間違っていますが、なぜそれが起こるのか知りたいです。私の理論では、日付キャストは、数値キャストと同様に、指定された型を単にキャストするのではなく、変換しようとするためにオーバーライドされています。

興味深いことに、他のものを Date にキャストして Date に割り当てることも失敗します。

var date : Date = Date("1/2/3");
var date : Date = Date(123);

// (Both fail)

ただし、オブジェクトへの割り当ては成功します。

var object : Object = Date(new Date(2012, 01, 01));
var object : Object = Date("1/2/3");
var object : Object = Date(123);

// (All succeed)
4

2 に答える 2

5

AS3 は非常に紛らわしく、一貫性がない場合があります。基本的に、そのコード サンプルでは何もキャストしていません。

AS3 には、キャスト演算子よりも優先されるいくつかのグローバル キャメルケース関数があります。Vector にも同様のグローバル関数があります。

new 演算子なしで Date(bla) を実行すると、明らかにその日付の文字列表現が作成されます...代わりに as 演算子を使用してキャストしてみてください。

于 2012-08-22T09:43:00.943 に答える
1

通常、コンパイラの引数があれば、この動作についてコンパイラの警告が表示されます。

<!-- Invalid Date cast operation. -->
<warn-bad-date-cast>true</warn-bad-date-cast>

flex-config.xmlに存在します。

于 2012-08-22T11:31:16.960 に答える