Страницы

понедельник, 19 октября 2009 г.

Обобщённое программирование(generics) в Delphi 2009 для Win32. Оглавление.

I. Введение

II. Повседневное использование на примере TList<T>

III. Создание обобщённого класса.

IV. Создание обобщённой записи

V. Ограничения обобщенных типов

VI. Использование в качестве параметра более чем одного типа

VII. Другие типы дженериков

VIII. Обобщённые методы

IX. RTTI и генерики

Послесловие и ссылка на скачивание исходников (не переведено).

 

Скачать в виде PDF.

16 комментариев:

  1. Большое спасибо, было бы неплохо если бы был оффлайн вариант в виде PDF или CHM :)

    ОтветитьУдалить
  2. +1 make действительно неплохо бы

    ОтветитьУдалить
  3. Я извиняюсь, а можно это как то скачать одним htm файлом?, я просто на e-ink читаю подобное. да и сохранить хотелось бы..

    ОтветитьУдалить
  4. Ну или просто одним файлом (или страницей), формат не важен.

    ОтветитьУдалить
  5. Спасибо! Дженерики как раз то чего мне нехватало :)

    ОтветитьУдалить
  6. Спасибо за инфу, и за удобное представление!

    "Всѐ понятно? Это просто чудесно, учитывая, что я не дал ни единого пояснения. Это лишний раз
    доказывает, что дженерики это также просто как пирог :-). (примечание переводочника: не знаю почему
    автор считает что пирог – это просто. Я как-то пробовал испечь один, и скажу честно -
    программирование намного проще)"

    Комментарий конечно веселый, но лучше убрать, т.к.:
    (as) easy as pie
    very easy You make everything sound as easy as pie, George.
    Usage notes: also used in the forms (as) easy as 1-2-3 or (as) easy as A, B, C (very easy to understand) and (as) easy as falling off a log (very easy to do)
    http://idioms.thefreedictionary.com/easy+as+pie
    (от себя: эта идиома - аналог piece a cake, которую некоторые переводчики фильмов переводят дословно, что порождает бурю веселья у знающих людей :) )

    Также неплохо бы исправить многочисленное употребление слова "перезагрузка" - Матрица, конечно, рулит, но в данном случае устоявшийся термин всё-таки перегрузка.

    Fr0sT

    ОтветитьУдалить
  7. Fr0sT, спасибо за замечания.

    Я посчитал, что могу себе позволить, вставить эту небольшую шутку, специально оставив дословный перевод этой идиомы. В конце концов, смысл статьи от этого не меняется.
    К тому, же, имхо, стилистически этот перевод слишком далёк от совершенства, чтобы эта небольшая шалость могла его испортить ещё больше.

    ОтветитьУдалить
  8. К тому же, правка каждого отдельного поста, включая проверки того, что форматирование не слетело займёт слишком много времени.

    ОтветитьУдалить
  9. Алексей, дело хозяйское, конечно. Хотя не знаю, что может быть сложного в замене одного слова на другое и почему должно слететь форматирование.
    Fr0sT

    ОтветитьУдалить
  10. Fr0sT, время, время.
    А форматирование может слететь, из-за большого количества исходников содржащих угловые скобки, и подсветки синтаксиса. Раньше слетало регулярно. Счас, вроде проще.

    Пройтись по всем постам, чтобы найти все упоминания этого слова. Открыть для редактирования нужный пост, скопировать в блокнот. Найти нужный фрагмент, заменить. Вставить назад. Сохранить. И внимательно проверить, что исходники не похерились.

    Впрочем, заменил-таки. И даже вспомнил, почему не использовал термин "перегрузка". С ним текст воспринимался как Космическая одиссея, а не инструкция по обобщениям.

    Одно название главы: "Перегрузки и ограничения" чего стоит. :)

    ОтветитьУдалить
  11. Алексей, спасибо, что все-таки исправил :) с переводом технической терминологии всегда беда, поэтому приходится юзать устоявшиеся варианты, даже если они не очень нравятся (взять хотя бы пресловутый thread = поток; неправильно и создает путаницу со stream, но прижилось ведь, и попробуй скажи "нить").

    Еще момент по ограничениям. В статье сказано, что можно накладывать ограничение простого типа - ordinal и float, однако нигде нет примера, как это можно сделать. TMyClass, TMyClass дают ошибку. Беглое загугливание ничего не даёт по этому вопросу. В справке тоже никакого упоминания

    Constraint items include:
    *Zero, one, or multiple interface types
    *Zero or one class type
    *The reserved word "constructor", "class", or "record"

    Судя по всему, автор недоглядел или выдал желаемое за действительное.

    ОтветитьУдалить
  12. угловые скобки скушались, проверим квадратные...
    TMyClass[ T: Ordinal ] и TMyClass [ T: float ]

    ОтветитьУдалить
  13. Большое спасибо!

    ОтветитьУдалить