![]() |
Полиморфизм как :*
Вот такая интересная байка :
Есть скажем 5 классов, похожих по реализации и все имеющие setter / getter ( set info / get info ) Однако установка set info(value:SomeDiffrentClass) как создать общий интерфейс для этих 5 классов, чтобы включить в него данный сеттер / геттер , если у каждого из 5 классов свой SomeDiffrentClass ? |
Если у них разные SomeDiffrentClass, какой же это интерфейс?
делай ISomeDiffrentClass а уже в реализациях кастуй Код AS1/AS2:
|
Котяра - это все понятно. Косяк в другом
SomeDiffrentClass имеет различные методы внутри от другого сомеДифрент, соотв основной класс не увидит нужных методов. Я понимаю, что это не есть тру, мне было просто интересно. в данном случае яконечно же не буду строить интерфейс, он там не к месту |
А зачем? Интерфейс-то, простите, разный. Вы не можете использовать эти 5 разных типов в одной и той же ситуации, раз они принимают данные разных типов. Вы можете создать.. интерфейс данных (что по сути нелепо). Но Вы уверены, что это вообще можно называть культурным словом "Архитектура"? Вы сейчас ищете способ заставить компилятор собрать программу, в которой в сеттеры сознательно передаются не те данные, которые им нужны. Одумайтесь! :)
|
Wolsh не я одумался, точнее я все это понимаю и так не строю программу, это чисто ради интереса вопрос был
|
Инфокора дело говорит.
Мне тоже хотелось создать RenderersGroup, в котором присобачить скролл с пулом объектов. Ну, например, 20 рендереров, которые рендерят некоторый вектор Vector.<SomeModels>, а при прокрутке меняют свои модели (рендерили с 0 по 19, после с 20 по 39). Однако, модели могут быть какие угодно, главное, чтобы когда рендереру дёргали сеттер модели - тип совпадал. Да, мне хочется темплейтов/генериков. Очень хочется. |
Цитата:
_info как КонкретныйКласс Цитата:
|
Проблема принципиальная (нет генериков в as3) - либо приведение типов, либо копипаста кода.
Приведение типов обычно, как бы не было противно его делать - выигрывает. В критических случаях, где типизация очень нужна, можно обернуть базовый нетипизированный класс, пример обертки для хеша: Код AS3:
Ну или, если требуется универсальная обработка TypedHash - дальше изголяться (пробовал такое для итератора - оверхед жуткий - выкинул нафиг и забил - итераторы только для haXe хороши): Код AS3:
|
| Часовой пояс GMT +4, время: 23:49. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.