![]() |
|
||||||||||
|
|||||
|
А чем для проверки это вот не устраивает?:
Кстати, интересно, что Vector.<*>(v), в отличие от Vector.<Object>(v) не создает нового вектора. Т.е. это типа декларативная запись. А еще: |
|
|||||
|
@i.o., рабочий, только это не вектора же
а как будет с т.е. вот что есть у нас во флеше, а ничего другого нет пока |
|
|||||
|
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
это массивы вообще
![]() Добавлено через 12 минут Прошу прощения, поспешил: public Form1() { InitializeComponent(); int[] intArray = new int[] { 0, 1, 2, 3, 4 }; string[] stringArray = new string[] { "a", "b", "c", "d" }; Debug.WriteLine("intArray length: " + this.GetArrayLength(intArray)); Debug.WriteLine("stringArray length: " + this.GetArrayLength(stringArray)); } public int GetArrayLength<T>(T[] array) { return array.Length; }
__________________
Загружаем картинки, минуя ошибки безопасности Последний раз редактировалось i.o.; 27.11.2011 в 01:04. |
|
|||||
|
Цитата:
Еще у Array есть одно преимущество перед Vector, которое обычно не учитывают: Операции типа splice и concat работают вдвое быстрее. Однажды удивился падению производительности после замены на вектор и вернул обратно, а потом уже в сети на тесты производительности наткнулся. Последний раз редактировалось expl; 27.11.2011 в 01:25. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
Цитата:
Цитата:
__________________
Reality.getBounds(this); |
|
|||||
|
Цитата:
Цитата:
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Вот, спасибо, fljot! Это убедительно.
Теперь разберем вопрос автора. var ccc:String = "__AS3__.vec::Vector.<flash.display::Sprite>"; var v:* = new (getDefinitionByName(ccc)); trace(getQualifiedClassName(v)); trace(v is Vector.<*>) var s1:Sprite = new Sprite(); s1.name = "First"; var s2:Sprite = new Sprite(); s2.name = "Second"; v.push(s1); v.push(s2); removeElementFromVector(v, s1); trace(v[0].name); public static function removeElementFromVector(v:Vector.<*> , searcher:* ):void { for (var i:int = 0; i < v.length; i++ ) { if ( v[i] == searcher ) v.splice( i , 1 ); } } Я так и не понял претензий к Вектору и его типизации. То, что хак с getDefinitionByName работает, конечно грубость, но, в общем, нет генериков это нет генериков, что ж тут удивляться необычности реализации. Тем не менее в поведении as3-шного вектора я не вижу ничего непредсказуемого или нелогичного.
__________________
Reality.getBounds(this); |
|
|||||
|
Wolsh, да посмотри мой давний вопрос по ссылке —*там более по-человечески задано было. Аргумент никаким векторным типом задать нельзя, только * или Object, зато в теле функции без проблем можно кастовать к Vector.<*>
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Я хоть убей не понимаю, как может "вектор, у которого все элементы могут быть только Спрайтами", перекастован в "вектор, у которого элементы могут быть чем угодно". Это реально баг с is. Реально даже строка
логически неверна и не должна компилиться. А она компилится, но при этом компилятор не даст добавить в v ничего кроме Спрайта. Я поспешил с "не вижу ничего нелогичного". Спасибо еще раз за доходчивость.
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:24. |
|
|
« Предыдущая тема | Следующая тема » |
|
|