![]() |
|
||||||||||
|
|||||
|
Регистрация: Sep 2010
Адрес: Moscow
Сообщений: 473
|
Добрый день,скажите пожалуйста,а в as3 есть перегрузка конструктора класса?
|
|
|||||
|
Регистрация: Jun 2011
Сообщений: 212
|
Вариантов 2:
либо пересоздавать переменную: var1 = new var1class(); любо нужный "инициализационный" код вынести в отдельную public-функцию, которую и вызывать по мере необходимости. |
|
|||||
|
Modus ponens
|
Перегрузкой как правило называют overloading, т.е. возможность создания нескольких функций с одинаковым именем, но разным количеством параметров. Этого в AS3 нет, но обычное решение проблемы - задать значения по умолчанию для аргументов. Если такой вариант не устраивает - делайте статические функции-фабрики, которые бы создавали объект с нужными аргументами, типа:
public class Foo { public function Foo(foo:int, bar:String) { . . . } public static function createFoo():Foo { return new Foo(42, "X"); } }
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Sep 2010
Адрес: Moscow
Сообщений: 473
|
спасибо!благодарю!
|
|
|||||
|
.
|
Да, есть. На примере Array и NameSpace. Или это множественность конструкторов )
Последний раз редактировалось dimarik; 22.09.2011 в 22:19. |
|
|||||
|
Цитата:
/** * А здесь мы пишем: * если передается строка, то... * и т.д. и т.п. */ public function MyClass(...args) { if (args != null && args.length == 1 && args[0] is String) { ... } else { ... } Недостаток перегрузки в AS3 доставляет только 1 неудобство: придумывание дурацких префиксов к именам методов, а так все что можно сделать с перегрузкой, можно сделать и без нее. Ну разве что, говорят, в при реализации паттерна Visitor сложнее ошибиться с вызовом правильного метода, если есть перегрузка методов по параметра в языке. Т.е. все методы accept называются одинаково, только параметры разные принимают, значит вызвать "не тот" не получится, но это явно не глобальная проблема. Последний раз редактировалось expl; 23.09.2011 в 00:14. |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:40. |
|
|
« Предыдущая тема | Следующая тема » |
|
|