| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Какими новшествами языка вы уже пользуетесь... |
| Автор: lukas 9.1.2009, 10:54 | ||||
| Стало интересно какими новыми возможностями языка люди начали активно пользоваться. Мне например очень понравилась конструкция Exit(<Результат функции>), т.к. меня часто раздражало что то типа этого: схематично...
а теперь намного легче..
Для меня это аналог return'a из Си. UPD Модераторы, пожалуйста, добавьте в опрос опцию выбора нескольких вариантов ответа. |
| Автор: kemiisto 9.1.2009, 12:03 |
| Generics. Кстати, мне кажется более удачным переводом этого термина "параметризованные типы данных". Лучше отражает суть. |
| Автор: Bose 9.1.2009, 16:44 |
| Я пока только exit использую. Я даже старые возможности использую не на полную. Например, только недавно стал пользоваться явными указателями на Boolean, integer. опять-таки только недавно стал шире использовать процедурные типы. На анонимные методы пока только облизываюсь издалека, ещё не придумал где их полезнее заюзать. С Generics аналогично. К слову сказать, я думаю, что старые возможности на полную мощность использут вообще единицы программистов. ;-) Как думаете? |
| Автор: CodeMonkey 9.1.2009, 17:41 |
| Во-первых, список не полон, во-вторых низзя выбрать несколько значений ;) Лично я уже использую генерики, exit, новые исключения, ну и unicode, разумеется. Ну и может ещё какие более мелкие хрюшки, о которых вот так сходу и не упомнишь. |
| Автор: Bose 9.1.2009, 17:58 |
| CodeMonkey, а разве новые исключения исключения нужно как-то специально использовать? [*] [*] Кроме http://blog.marcocantu.com/blog/fun_delphi_2009.html; Кстати вот какие новшевства http://blog.marcocantu.com/blog/6hidden_delphi2009.html: * InnerException (that is you raise an exception while handling one... and both exception objects are kept around) * TTextReader interface for streams (and strings), this is so nice you won't care about StringBuilder * You can change the internal classes used by any DataSet by changing a global variable holding a class (FieldDefs, IndexDefs, Params... and many more) * TObject.ToString and the other new methods of the TObject class * commented deprecated (that is, deprecated with a string indicating an extra compiler hint, too bad it is not used much by the VCL) |
| Автор: bems 9.1.2009, 18:51 |
это слишком мелко. Я за "абстракции параметрического полиморфизма" это шо за звери? |
| Автор: CodeMonkey 10.1.2009, 02:56 |
| Не, ну как же. Впервые в истории Delphi изменился класс Exception - и не использовать это? Да, в первую очередь я имею ввиду именно InnerException. В предыдущих Delphi мне приходилось его эмулировать вручную в своих классах. |
| Автор: Akella 10.1.2009, 21:39 | ||
| а TStringBuilder забыли Добавлено через 2 минуты и 2 секунды
а можно на русском? Добавлено через 3 минуты и 24 секунды Не голосовал пока что, может через годик проголосую, я в D2009 пока только балуюсь. |
| Автор: Bose 11.1.2009, 01:25 |
Я затрудняюсь перевести, потому что сам толком не понимаю. |
| Автор: CodeMonkey 11.1.2009, 03:57 |
| * InnerException (т.е. вы можете возбудить исключение при обработке другого... и оба объекта исключения будут сохранены для последующей обработки) * Интерфейс TTextReader для потоков (и строк) * Вы можете менять внутренние классы, используемые любым DataSet, меняя глобальные переменные (FieldDefs, IndexDefs, Params... и другие) * TObject.ToString и другие новые методы класса TObject * deprecated с комментами (т.е. ключевое слово deprecated с дополнительной строкой-хинтом, очень жаль что эта возможность пока не слишком используется в самой VCL) P.S. Но это изменения только RTL и то далеко не все. |
| Автор: Bose 11.1.2009, 04:27 |
| Ещё некоторые новшевства(из Delphi 2009 Help) Новая директива компилятора: $POINTERMATH [ON|OFF]. включает выполнение математических операций над указателями. (надеюсь, что даже сталкиваться с таким кодом не придётся) VCL и RTL Новые компоненты Ribbon Controls, TButtonedEdit и TCategoryPanel, TCategoryPanelGroup, TLinkLabel, TTListGroup, TListGroups, TCustomHint, TBalloonHint Новые классы: TCharacter, TEncoding, TStringBuilder, TStringReader, TStringWriter , TStreamReader, TStreamWriter. Добавлено через 6 минут и 21 секунду Ещё 2 заметки с комментариями о новинках в блоге romkin: http://vingrad.ru/blogs/romkin/2008/09/08/delphi-2009-chto-novogo/ http://vingrad.ru/blogs/romkin/2008/09/09/delphi-2009-chto-novogo-2/ |
| Автор: Akella 11.1.2009, 13:03 |
| Ну вот, уже лучше, а то три новшества написал и голосуйте |
| Автор: kemiisto 11.1.2009, 13:46 |
| Кстати, сам Марко Кэнту прголосовал бы за Generics, ибо именно их он считает наиболее важным расширением языка Object Pascal с момента появления интерфейсов в Delphi 3. |
| Автор: lukas 12.1.2009, 10:08 |
| я вот тоже пока не знаю где использовать Шаблоны, а ведь есть какие то уже встроенные шаблоны, кто знает какие есть и как ими пользоваться могут рассказать. |
| Автор: CodeMonkey 12.1.2009, 10:21 |
| А что, TList и TObjectList никто не пользуется в своих программах, что-ли? Вот вместо них и можно использовать TList<конкретный-класс>, TObjectList<конкретный-класс>. Это не единственный, но первый и самый близкий пример - ибо с этими классами наверняка работали все. |
| Автор: Alexeis 12.1.2009, 10:38 | ||
Я чуток покопался в хелпе 2009й. Все таки то что есть в Delphi for Win32 нельзя назвать Женериками, это на самом деле шаблоны. Делфийские шаблоны инстанцируются во время компиляции и для каждый инстанциированного шаблон является новым классом со своим RTTI и своим метаклассом. В Win32 нет динамического инстанцирования. Нельзя сделать шаблон по переменной метакласса. Проще говоря это то что есть в С++, только в упрощенном виде, со всеми вытекающими последствиями (ограничениями). |
| Автор: lukas 13.1.2009, 13:40 |
| а вот кто нашел реальное применение анонимным методам??? это же по сути тот же процедурный тип. |
| Автор: Bose 13.1.2009, 16:32 | ||
+1 вот! меня смущает эта схожесть. Я пока не вижу что такого особенного в анонимных методах, чего нельзя было сделать с помощью процедурных типов. |
| Автор: bems 13.1.2009, 17:29 |
| lukas, Bose, вам нравится в каждом колбэке передавать явный указатель на контекст? |
| Автор: Bose 13.1.2009, 19:04 | ||
Это случается не так часто, но пока что меня это не напрягало. К тому же это приводит к необходимости чётко определять входные параметры callback-процедур, что в свою очередь делает код более структурированным и уменьшает число возможных ошибок. |
| Автор: lukas 14.1.2009, 15:46 |
| ладно тогда покажите что можно реализовать такого через анонимные методы, чего нельзя реализовать через процедурные типы??? |
| Автор: CodeMonkey 14.1.2009, 16:44 | ||||||||
http://forum.sources.ru/index.php?showtopic=248615&view=findpost&p=2059967 :
Надо понимать, что они просто упрощают написание кода. Ведь если так рассуждать ("что можно реализовать через анонимные методы, чего нельзя реализовать через процедурные типы"), то можно и без for обойтись и без while. А в некоторых языках указателей вообще нет. Ну и пишут же как-то там программы. Вот также и анонимные методы. Они бывают полезны. Это простой способ увеличить время жизни локальных переменных. Вообще же код:
Эквивалентен (грубый псевдо-код):
- В качестве базы используется объект, реализующий вспомогательный интерфейс. - Использование интерфейса позволяет автоматически производить очистку ресурсов (все "локальные переменные" удаляются автоматически, как только вы обнулите последнюю ссылку на анонимный метод). - Использование локальной переменной в процедуре фактически делает эту переменную полем внутреннего объекта. В нашем случае I и P уже не локальные переменные - это поля невидимого объекта. - Вы можете увидеть этот интерфейс и вживую, если после имени переменной типа анонимный метод поставите точку: там будут методы IInterface + метод Invoke. - Компилятор различает вспомогательные интерфейсы и обычные и не даёт их смешивать. |
| Автор: bems 14.1.2009, 20:27 | ||
|