|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jul 2007
Адрес: Россия, Москва
Сообщений: 522
|
Обобщение типизированных массивов (Vector)
Всем привет, возник следующий вопрос.
Допустим, мне хотелось бы сделать какую-то простую вспомогательную функцию, которая бы упрощала процесс удаления объекта из массива. Если мы работаем с Array, то всё решается следующим образом: /** * Удаление объекта, если он присутсвует в массиве. * * @param obj объект, который нужно будет удалить. * @param array массив, из которого нужно будет удалить обект. * * @return флаг, который показывает, был ли удалён объект. */ static public function removeObjFromArray(obj:*, array:Array):Boolean { var isRemoved:Boolean = false; var index:int = array.indexOf(obj); if (index >= 0) { array.splice(index, 1); isRemoved = true; } return isRemoved; } /** * Удаление объекта, если он присутсвует в типизированном массиве. * * @param obj объект, который нужно будет удалить. * @param vec типизированный массив, из которого нужно будет удалить обект. * * @return флаг, который показывает, был ли удалён объект. */ static public function removeObjFromVector(obj:*, vec:Vector.<*>):Boolean { var isRemoved:Boolean = false; var index:int = vec.indexOf(obj); if (index >= 0) { vec.splice(index, 1); isRemoved = true; } return isRemoved; } var vec:Vector.<int> = new Vector.<int>(); vec.push(0); vec.push(1); vec.push(2); ArrayTools.removeObjFromVector(1, vec); В то время, как такой код никакой ошибки не выдаст: var vec:Vector.<*> = new Vector.<*>(); vec.push(0); vec.push(1); vec.push(2); ArrayTools.removeObjFromVector(1, vec); За ранее спасибо за помощь =) Последний раз редактировалось koIIImarik; 17.10.2010 в 21:09. |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
А если написать без указания типа, т.е:
Попробуйте и отпишитесь
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
нет. Тогда вектор Class'ов будет.
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
Там ошибка выскакивает уже при компиляции, т.е. Vector.<*> и Vector.<int> считаются абсолютно разными типами.
Можно сделать так выглядит не красиво, ошибки будут находиться только во время выполнения, но зато такая функция работает и с любыми векторами и с массивами. |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
По сути на сишном синтаксисе это int vec[] или void vec[]. На си такая проблема решается темплейтами, свои темплейты в ас3 писать, к сожалению, нельзя.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Регистрация: Jul 2007
Адрес: Россия, Москва
Сообщений: 522
|
2 i.o.:
Пробовал, не помогало =( 2 f.g.programmer: Спасибо большое за идею =) Как-то не пришло это просто в голову. |
Часовой пояс GMT +4, время: 15:25. |
|
« Предыдущая тема | Следующая тема » |
Теги |
Vector , Дрюки , массивы , типизация , Трюки |
|
|