AS3 как против класса () - PullRequest
       1

AS3 как против класса ()

2 голосов
/ 04 октября 2011

Я не до конца понимаю преимущества / недостатки этих двух методов типизации в этом примере:

for each(var i:DisplayObject in _display)
{
    trace(i as Sprite);
    trace(Sprite(i));
}

Есть ли рекомендации по этому поводу вообще?Я всегда включал Class(), как в последнем примере, но as иногда читается легче.

Ответы [ 2 ]

6 голосов
/ 04 октября 2011

Насколько я понимаю, разница составляет TypeError.

var o:Object = "test";

trace( o as MovieClip ); // displays: null
trace ( MovieClip ( o ) ); // generates a TypeError

http://archive.darronschall.com/weblog/2006/02/actionscript-3-casting.html

0 голосов
/ 04 октября 2011

Я всегда использую как, потому что некоторые классы имеют неожиданные результаты при использовании класса (ссылка).Например,

var arr:Array = [1, 2, 3];

var arr2:Array = Array(arr);

arr2 теперь [[1,2,3]]

Это довольно очевидно, когда arr и arr2 определены здесь вместе, но когда arr определен где-то ещеи вы не знаете, содержит ли он массив или нет, вы можете получить ошибку, используя синтаксис Array (arr).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...