|
|
|||||
Тип Vector.<*> в роли аргумента
Векторы доступны уже года два наверное, а я до сих пор не могу понять как же так.
var v:Vector.<Sprite> = new Vector.<Sprite>(); trace(v is Vector.<*>);// true var foo:Vector.<*>; //foo = v;// Implicit coercion of a value of type __AS3__.vec:Vector.<flash.display:Sprite> to an unrelated type __AS3__.vec:Vector.<*>. foo = v as Vector.<*>; // OK var bar:Vector.<Sprite> = foo as Vector.<Sprite>;// OK genericArgument(v);// true, 0, Hello from genericArgument() //typedArgument(v);// Implicit coercion of a value of type __AS3__.vec:Vector.<flash.display:Sprite> to an unrelated type __AS3__.vec:Vector.<*>. function genericArgument(value:*):void { var foo:Vector.<*> = value as Vector.<*>; trace(foo is Vector.<*>, foo.length); // true, 0 trace("Hello from genericArgument()"); } function typedArgument(value:Vector.<*>):void { trace("You won't see this message"); } Последний раз редактировалось fljot; 12.07.2011 в 19:32. Причина: Добавил foo, bar |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Vector.<*> и Vector.<Sprite> - это разные векторы.
Вот правда я не понял, почему адоб не сделал Vector.<Sprite> is Vector == true На данный момент false. Т.е любой вектор это не вектор..
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
Перечитайте пример — там вчастности показано, что Vector.<Sprite> is Vector.<*>
|
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
что ж тогда у вас RTE вылетает?
Цитата:
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
Регистрация: Nov 2010
Сообщений: 497
|
Цитата:
Что должно было бы быть в результате - не понятно. |
|
|||||
Modus ponens
|
В таком контексте - баг, или, вернее, недоработка, не известно когда поправят. (Изначально Vector.<*> вообще не было, и его чего-то как-то не торопятся довести до ума...)
ЗЫ. Aquahawk: Даже в нетипизированом векторе есть смысл, например уже потому, что вектор - гарантировано dense т.е. в нем все индексы с 0 по length - 1 заполнены, в то время как в Array, ситуация выглядит примерно так: 0 .. first-non-empty + hash-table состоящая из индексов записаных как строки содержащие значения этих индексов в десятичном представлении... Т.е. по ситуации либо тот либо другой варианты могут работать гораздо лучше при сериализации, например.
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 12.07.2011 в 19:42. |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Вариант первый (работает)
var v:Vector.<Object> = new Vector.<Object>(); v.push(1.1); v.push(2.2); v.push(3.3); v.push(4.4); trace("v is Vector: " + (v is Vector)); trace("v is Vector.<*>: " + (v is Vector.<*>)); trace("v as Vector.<*>: " + (v as Vector.<*>)); trace("v as Vector.<Object>: " + (v as Vector.<Object>)); trace("v as Vector.<Number>: " + (v as Vector.<Number>)); typedArgument(v as Vector.<*>); function typedArgument(value:Vector.<*>):void { trace("typedArgument() -> value: " + value); } Цитата:
var v:Vector.<Number> = new Vector.<Number>(); v.push(1.1); v.push(2.2); v.push(3.3); v.push(4.4); trace("v is Vector: " + (v is Vector)); trace("v is Vector.<*>: " + (v is Vector.<*>)); trace("v as Vector.<*>: " + (v as Vector.<*>)); trace("v as Vector.<Object>: " + (v as Vector.<Object>)); trace("v as Vector.<Number>: " + (v as Vector.<Number>)); typedArgument(v as Vector.<*>); function typedArgument(value:Vector.<*>):void { trace("typedArgument() -> value: " + value); } Цитата:
Цитата:
Добавлено через 1 минуту Кстати да. Вы попробуйте для начала создать
__________________
Загружаем картинки, минуя ошибки безопасности |
Часовой пояс GMT +4, время: 12:48. |
|
« Предыдущая тема | Следующая тема » |
Теги |
Vector |
|
|