Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.218.147.56] |
|
Страницы: (11) « Первая ... 6 7 [8] 9 10 ... Последняя » все ( Перейти к последнему сообщению ) |
Сообщ.
#106
,
|
|
|
Цитата mo3r @ э-ээ.. Этот код отличается от моего. Нужно передать в my_func2 то, что нам вернула my_func, а затем это удалить. Интересно, как это будет выглядеть с with? И сколько строчек он будет занимать? А если аргументов --- не один, а пять? Да ты что type MyClass = class function GetThis: MyClass; property This: MyClass read GetThis; end; function MyClass.GetThis: MyClass; begin Result := Self; end; function my_func: MyClass; begin result := MyClass.Create(); end; procedure my_func2(mc: MyClass); begin ... end; begin with my_func do try my_func2(this); finally free; end; end. И то же самое с интерфейсами: type IMyClassInt = interface ... end; TMyClass = class(TInterfacedObject, IMyClassInt) ... end; function my_func: IMyClassInt; begin result := MyClass.Create(); end; procedure my_func2(mc: IMyClassInt); begin ... end; |
Сообщ.
#107
,
|
|
|
Цитата Smike @ Да ты что Класс пришлось изменить, чтобы это поддерживалось. Да и в любом случае дополнительно 5 строчек. Цитата mo3r @ А как у этой штуки с наследованием --- ведь TInterfacedObject --- это класс, не так ли? А это уже не даст отнаследовться от других классов. Smike, а на это что скажешь? |
Сообщ.
#108
,
|
|
|
Цитата mo3r @ Smike, а на это что скажешь? А что мешает базовый класс от интерфейсного объекта унаследовать? TInterfacedObject - это такой же объект, только со счетчиком ссылок. Классы VCL и так интерфейсные: TComponent = class(TPersistent, IInterface, IInterfaceComponentReference) |
Сообщ.
#109
,
|
|
|
Цитата Smike @ А что мешает базовый класс от интерфейсного объекта унаследовать? TInterfacedObject - это такой же объект, только со счетчиком ссылок. Классы VCL и так интерфейсные: Вот я и говорю --- удобство разработки прямо сразу видно --- менять весь дизайн приложения из-за непродуманности языка. |
Сообщ.
#110
,
|
|
|
Цитата best_lamer @ Таким образом со счетом (0:00:03) против (0:00:28) те 3 сек. против 28 сек. победил (фанфары барабаны) Delphi Ура товарищи! Ничего противоестественного не вижу. Основное достоинство интерпретируемых языков в безопасности кода и более быстром процессе разработки. |
Сообщ.
#111
,
|
|
|
Цитата mo3r @ Вот я и говорю --- удобство разработки прямо сразу видно --- менять весь дизайн приложения из-за непродуманности языка. Глупо утверждать, что это непродуманность языка. Мне это при разработке никогда не мешало. Просто архитектуру нужно изначально придумывать корректную. Давай на примере. Зачем может понадобиться создание 3-х одинаковых объектов, передача их в одну функцию и автоматическое их удаление? |
Сообщ.
#112
,
|
|
|
Цитата Smike @ Да ты что А если таких аргументов, скажем, два, а? |
Сообщ.
#113
,
|
|
|
У меня хватило терпения до 70000! дальше еще считает... сколько максимально возможный факториал даже не представляю... У кого есть желание проверить точнее милости просим |
Сообщ.
#114
,
|
|
|
Цитата best_lamer @ У кого есть желание проверить точнее милости просим Что, так долго считает? Добавлено Цитата linuxfan @ А если таких аргументов, скажем, два, а? Если объяснишь зачем - тогда скажу как. А так я программировать не привык. Код пишется под задачу, а не под с целью точно продублировать какой-то другой код. |
Сообщ.
#115
,
|
|
|
Сейчас подмешиваемые (Mix-in) классы вспомниать начнем...
|
Сообщ.
#116
,
|
|
|
Цитата Smike @ Если объяснишь зачем - тогда скажу как. А так я программировать не привык. Ясно. Значит -- никак. Ну не очень-то и надо. В C++ лямбда функций ведь нет (костыль, кажется, в boost положили?) |
Сообщ.
#117
,
|
|
|
Цитата linuxfan @ В C++ лямбда функций ведь нет (костыль, кажется, в boost положили?) Это означает, что эти функции могут быть реализованы средставми языка. По этому про "костыли" - не надо. |
Сообщ.
#118
,
|
|
|
Цитата linuxfan @ Ничего противоестественного не вижу. Основное достоинство интерпретируемых языков в безопасности кода и более быстром процессе разработки. Полностью согласен! Я сам и не ожидал того что Python будет быстрее хотя это было бы клево. Просто я хотел оценить во сколько раз интерпретируемые языки медленнее. Оценил приблизительно раз в 10 проигрыш по скорости исполнения кода. Добавлено Цитата Smike @ Что, так долго считает? Ты вначале сделай нормальный факториал в целых а потом поговорим дальше идет? |
Сообщ.
#119
,
|
|
|
Вывод как и должен быть. Увы, из консоли не копируется у меня, пишу: Цитата Foooo! Destroy И ждет Enter на readln, разумеется. Цитата mo3r @ Цитата (Smike @ Сегодня, 17:20) А что мешает базовый класс от интерфейсного объекта унаследовать? TInterfacedObject - это такой же объект, только со счетчиком ссылок. Классы VCL и так интерфейсные: Вот я и говорю --- удобство разработки прямо сразу видно --- менять весь дизайн приложения из-за непродуманности языка. Ну млин. Интерфейс я ввести могу на любом уровне иерархии. Я использовал TInterfacedObjetc потому, что там реализованы три метода IInterface. Вот как раз и вводятся интерфейсы: Цитата Smike @ TComponent = class(TPersistent, IInterface, IInterfaceComponentReference) Причем здесь как раз подсчет ссылок отключается, поскольку за временем жизни компонента следит его контейнер. Это также и ответ на вопрос, почему приходится иногда писать реализацию методов IInterface Цитата mo3r @ Цитата (Romkin @ Сегодня, 16:36) type IFoo = interface procedure FooFoo; end; //Реализация TFoo = class(TInterfacedObject, IFoo) protected procedure FooFoo; public destructor Destroy; override; //Для иллюстрации даем сообщение end; Да, это "очень удобно и немногословно". Да, это очень удобно. А многословно или нет - кто-то может считать, что многословно. И что с того? Написано все, что нужно и так как должно. Это - компонент-ориентированное программирование уже, следующая стадия ООП. Интерфейс описывается отдельно, реализация - отдельно. Ясно, что у одного интерфейса может быть любое количество реализаций и один класс может реализовать несколько интерфейсов. Что такое компонентная модель - читайте книгу Дональда Бокса "Сущность технологии COM". Там он в первой главе очень популярно объясняет что это. Все, правда, на С++. Добавлено Цитата linuxfan @ Ничего противоестественного не вижу. Основное достоинство интерпретируемых языков в безопасности кода и более быстром процессе разработки. Ну что это за высказывание? Интерпретируемость сама по себе ничего не дает, практически любой язык может быть и интерпретируемым, и компилируемым. Или ты хочешь сказать, что если бы Delphi был интерпретируемым, то его код стал бы сразу безопасным и процесс разработки ускорился? Мне что-то не верится. Основное достоинство интерпретируемых языков в отсутствии компилятора. Интерпретатор всегда есть, и программа в виде текста. Основной недостаток - низкая скорость, если не применять некоторых ухищрений вроде прекомпиляции и тд. |
Сообщ.
#120
,
|
|
|
В этом выражении надо убрать слово "плюсовые"
А в Python иначе? Понятие "реально нужные вещи" весьма относительно. Мне вот не нужен ни один python'овский пакет. И сам python ни к чему. |