![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
||
|
|
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
А что, TList и TObjectList никто не пользуется в своих программах, что-ли?
Вот вместо них и можно использовать TList<конкретный-класс>, TObjectList<конкретный-класс>. Это не единственный, но первый и самый близкий пример - ибо с этими классами наверняка работали все. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Я чуток покопался в хелпе 2009й. Все таки то что есть в Delphi for Win32 нельзя назвать Женериками, это на самом деле шаблоны. Делфийские шаблоны инстанцируются во время компиляции и для каждый инстанциированного шаблон является новым классом со своим RTTI и своим метаклассом. В Win32 нет динамического инстанцирования. Нельзя сделать шаблон по переменной метакласса. Проще говоря это то что есть в С++, только в упрощенном виде, со всеми вытекающими последствиями (ограничениями). -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: 3 Всего: 15 |
а вот кто нашел реальное применение анонимным методам??? это же по сути тот же процедурный тип.
-------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 23 Всего: 51 |
||||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
lukas,
Bose, вам нравится в каждом колбэке передавать явный указатель на контекст? -------------------- Обижено школьников: 8 |
|||
|
||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 23 Всего: 51 |
Это случается не так часто, но пока что меня это не напрягало. К тому же это приводит к необходимости чётко определять входные параметры callback-процедур, что в свою очередь делает код более структурированным и уменьшает число возможных ошибок. |
|||
|
||||
| lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: 3 Всего: 15 |
ладно тогда покажите что можно реализовать такого через анонимные методы, чего нельзя реализовать через процедурные типы???
-------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
| CodeMonkey |
|
||||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
http://forum.sources.ru/index.php?showtopi...t&p=2059967 :
Надо понимать, что они просто упрощают написание кода. Ведь если так рассуждать ("что можно реализовать через анонимные методы, чего нельзя реализовать через процедурные типы"), то можно и без for обойтись и без while. А в некоторых языках указателей вообще нет. Ну и пишут же как-то там программы. Вот также и анонимные методы. Они бывают полезны. Это простой способ увеличить время жизни локальных переменных. Вообще же код:
Эквивалентен (грубый псевдо-код):
- В качестве базы используется объект, реализующий вспомогательный интерфейс. - Использование интерфейса позволяет автоматически производить очистку ресурсов (все "локальные переменные" удаляются автоматически, как только вы обнулите последнюю ссылку на анонимный метод). - Использование локальной переменной в процедуре фактически делает эту переменную полем внутреннего объекта. В нашем случае I и P уже не локальные переменные - это поля невидимого объекта. - Вы можете увидеть этот интерфейс и вживую, если после имени переменной типа анонимный метод поставите точку: там будут методы IInterface + метод Invoke. - Компилятор различает вспомогательные интерфейсы и обычные и не даёт их смешивать. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
||||||||
|
|||||||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
-------------------- Обижено школьников: 8 |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |