• Игорь Шевченко © (05.05.08 16:02) [60]
    oxffff ©   (05.05.08 15:51) [55]

    А нафига Codegear в язык добавляет Generic-и ? Если все так просто можно сделать и без них...
  • тимохов (05.05.08 16:02) [61]
    что же ты все, сергей, на личности переходишь...
  • oxffff © (05.05.08 16:06) [62]
    Alkid ©
    Я даже боюсь сказать о том, что синтаксис можно сокрашить до.
    var a:variant;
    begin

    a.sin;
  • oxffff © (05.05.08 16:07) [63]

    > тимохов   (05.05.08 16:02) [61]


    Рад слышать.
    Где?
  • oxffff © (05.05.08 16:09) [64]

    > oxffff ©   (05.05.08 16:06) [62]


    Более того эту конструкцию можно даже расширить.

    function abc(a:variant;funcName:string);
    c вызовом abc(a,'sin');

    ЗЫ. Читаем справку по Delphi.
  • Ketmar © (05.05.08 16:13) [65]
    2oxffff: ну и что ты пытаешься доказать? что в конце концов всё спускается к машинному коду, и что реализуемо на одном turing-complete, то можно и на другом реализовать? можно. баян. лучше спроси у лисперов, как сделать статическую (или хотя бы динамическую) проверку типов без изменения интерпретатора — и будете в рассчёте.
  • Игорь Шевченко © (05.05.08 16:14) [66]
    И вообще все можно написать на ассемблере. Только долго.
  • oxffff © (05.05.08 16:20) [67]

    > Игорь Шевченко ©   (05.05.08 16:02) [60]
    > oxffff ©   (05.05.08 15:51) [55]
    >
    > А нафига Codegear в язык добавляет Generic-и ? Если все
    > так просто можно сделать и без них...


    В том то и дело. То о чем говорю я это будет динамика.
    Поэтому этот тип фактически является оберткой над реальным типом.
    Это может быть например TvarRec, TvarData , Объект, и надо подумать на чем еще построить.

    Что касаемо generics. То это статика. Поэтому вызов будет проверяться в compile time.
    А если нацеплен constraint (а я думаю что  delphi Win32 будет поддерживать концепцию .NET generics, а не С++ templates).
    Но честно говоря характеристики Win32 generics не известны.
  • oxffff © (05.05.08 16:28) [68]

    > Ketmar ©   (05.05.08 16:13) [65]
    > 2oxffff: ну и что ты пытаешься доказать?


    Где?
    Я только хочу сказать, что если надо, то задача решаема.
    И достаточно просто. И при желании. До простого синтаксиса.

    [62],[64]

    Кто короче?
  • oxffff © (05.05.08 16:36) [69]

    > Игорь Шевченко ©   (05.05.08 16:02) [60]
    > oxffff ©   (05.05.08 15:51) [55]
    >
    > А нафига Codegear в язык добавляет Generic-и ? Если все
    > так просто можно сделать и без них...


    Можно.
    Но не забываем что нам на всех форумах представители С++ сообщества ставят в укор. А любят они тыкать нас носом на шаблонную сортировку.
    И заслуженно кстати. Любая операция с динамическим анализом и преобразованием занимает время. Поэтому в скорости мы проигрываем.
    И пока мы пишем код для разных типов для сопоставимых результатов с С++, они уже решают другие задачи.
  • Григорьев Антон © (05.05.08 16:36) [70]

    > oxffff ©   (05.05.08 15:48) [52]
    > type
    > TXFUNC=function (const a:TvarRec):TvarRec;
    >
    > function abc(var List:array of const;func:TXFUNC):integer;
    >
    > var i:integer;
    > begin
    > for i:=0 to length(List)-1 do LIST[i]:=func(LIST[i]);
    > end;
    >
    > function XSample(const a:TvarRec):TvarRec;
    > begin
    >
    > end;
    >
    > procedure TForm1.Button1Click(Sender: TObject);
    > var a:array of TVarRec;
    > begin
    > abc(A,XSample);
    > end;

    Не компилируется abc([1,'a', 2], XSample), т.е. константный список кушать не хочет. В Лиспе с этим проблем нет. Я уж молчу о том, что чтобы правильно сформировать содержимое массива a, надо будет повозиться с полями TVarRec, что очень неудобно. Полиморфизм функции XSample тоже не так просто сделать.

    > oxffff ©   (05.05.08 15:50) [54]
    > Как у вас с ООП?

    Видимо, очень плохо. Потому что не представляю, при чём вообще ООП, когда я хочу выполнить простые операции над типами integer, real, char и т.п.

    > oxffff ©   (05.05.08 15:51) [55]
    > Далее по тексту? Читали ли мы TcustomVariant?
    > Это кстати другое решение.

    Да, читали. Но TCustomVariant - это всё-таки не элементарный тип, а обеспечивать полиморфизм на уровне простых типов Delphi не умеет.

    > oxffff ©   (05.05.08 16:06) [62]
    > Я даже боюсь сказать о том, что синтаксис можно сокрашить
    > до.
    > var a:variant;
    > begin
    >
    > a.sin;

    Написал такую проверку:
    procedure TForm1.Button1Click(Sender: TObject);
    var v:Variant;
    begin
     v:=0;
     v.Sin(0)
    end;


    Получил ожидаемый результат - исключение в строке с синусом. Потому что такие фокусы проходят только когда v содержит указатель на IDispatch, т.е. простые типы опять пролетают как фанера над Парижем. Ответ насчёт стандартной функции sin не засчитывается.
  • Григорьев Антон © (05.05.08 16:40) [71]

    > oxffff ©   (05.05.08 16:28) [68]
    > Я только хочу сказать, что если надо, то задача решаема.

    Решаема. Можно вообще написать на Delphi библиотеку - интерпретатор Лиспа и делать что-то вроде
    a := LispEval('(apply 'mapcar (cons 'list lst))');


    Совсем короткий синтаксис получится :)
  • Игорь Шевченко © (05.05.08 16:42) [72]
    oxffff ©   (05.05.08 16:20) [67]

    Мне будет крайне интересна передача классов в иерархии через TVarRec

    type
     TFooBase = class
     public
        procedure SomeMethod (Param: TParam); virtual;
     end;

     TFoo = class(TFooBase)
     ...
     end;
     TBar = class(TFoo)
     ...
     public
        procedure SomeMethod (Param: TParam); override;
     end;

    То есть, при generic-ах я могу написать

     type
       TFooList = TList<TFoobase>
       public
        ...
         procedure ApplySomeMethod (Param: TParam);
       end;

    procedure TFooList.ApplySomeMethod (Param: TParam);
    var
     I: Integer;
    begin
     for I:=0 to Count-1 do
       Items[I].SomeMethod (Param);
    end;
  • oxffff © (05.05.08 16:47) [73]

    > Григорьев Антон ©   (05.05.08 16:36) [70]


    На все твои замечения ответы дам вечером.
  • oxffff © (05.05.08 16:50) [74]

    > Игорь Шевченко ©   (05.05.08 16:42) [72]


    Предлагаю назначить время вечером и я думаю все решим.
    Во сколько сегодня?

    P.S. Шеф срочно просит написать хрень на ABAP.
  • ПостОвый терминатор © (05.05.08 16:55) [75]
    Давно не наблюдаю AEN   (02.05.08 21:46), а пост живет и здравствует. Особенно радуеи состав полемистов:)
    Успехов Вам в вашем творчестве.
  • Alkid © (05.05.08 17:22) [76]

    > P.S. Шеф срочно просит написать хрень на ABAP.

    А на ABAP как mapcar написать? :)))
  • Alkid © (05.05.08 17:24) [77]

    > ПостОвый терминатор ©   (05.05.08 16:55) [75]

    Осталось ещё участкового терминатора придумать :)
  • Ega23 © (05.05.08 17:32) [78]

    > Alkid ©   (05.05.08 17:24) [77]


    Почту проверь.
  • ПостОвый терминатор © (05.05.08 17:38) [79]
    Господа, заинтересованные! Извините еще в очередной раз. Позвольте спросить, что Вам мешает открыть соответствующую (новую) обсуждению ветку? А не флудить в ветке автора, которого ваша "переписка" похоже не интересует:(
Есть новые Нет новых   [134435   +10][b:0.001][p:0.001]