Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.05.29;
Скачать: CL | DM;

Вниз

процедурные ссылки   Найти похожие ветки 

 
Scott Storch   (2011-02-18 11:36) [0]

можете в двух словах объяснить в чем преимущества процедурных ссылок, если к примеру мне нужно в компаратор передать функцию сортировки:


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

 TMyRec = record
   ID: Integer;
   Name: string;
 end;

 TComparison<TMyRec> = reference to procedure(const Left, Right: TMyRec);

var
 Form1: TForm1;

implementation

uses Math, Generics.Collections, Generics.Defaults;

{$R *.dfm}

function CmpMyRecs(const Left, Right: TMyRec): Integer;
begin
 Result := CompareValue(Left.ID, Right.ID);

end;

procedure TForm1.Button1Click(Sender: TObject);
var
 MyRecs: TList<TMyRec>;
begin
 MyRecs := TList<TMyRec>.Create;
 try
   // MyRecs.Add();
   MyRecs.Sort(TComparer<TMyRec>.Construct(CmpMyRecs))
 finally
   MyRecs.Free;
 end;

end;

end.


в чем разница, объявлю я процедурную ссылку или нет.


 
RWolf ©   (2011-02-18 11:38) [1]

преимущества перед чем?


 
DiamondShark ©   (2011-02-18 11:41) [2]

А зачем её объявлять, если она нигде не используется?


 
Scott Storch   (2011-02-18 11:42) [3]

перед обычной функцией


 
RWolf ©   (2011-02-18 11:58) [4]

ссылка может указывать как на процедуру, так и на метод;
в параметрах функции вместо ссылочного аргумента можно вписывать анонимную процедуру.


 
RWolf ©   (2011-02-18 12:11) [5]

и да — closures.


 
han_malign   (2011-02-18 13:15) [6]

в C++ - подобные лямбда-примочки - на шаблонах - честно бета-редуцируются до линейного кода...

в Delphi - generics - это синтаксический сахар в ущерб производительности... или прослойка в .NET...


 
KSergey ©   (2011-02-18 16:04) [7]

> han_malign   (18.02.11 13:15) [6]
> в C++ - подобные лямбда-примочки - на шаблонах - честно
> бета-редуцируются до линейного кода...

Скажи честно: сам придумал или копи-паст? :)


 
han_malign   (2011-02-18 16:32) [8]


> или копи-паст?

- я еще и про ню-редукцию слышал... ;)



Страницы: 1 вся ветка

Текущий архив: 2011.05.29;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
15-1297718999
Юрий
2011-02-15 00:29
2011.05.29
С днем рождения ! 15 февраля 2011 вторник


1-1255951017
kyn66
2009-10-19 15:16
2011.05.29
Поле Date в SQl запросе


2-1297950993
Неважно
2011-02-17 16:56
2011.05.29
BMP в массив и обратно


1-1255882069
aha
2009-10-18 20:07
2011.05.29
Получаю данные ( неполный IEEE формат - 3 байта) , как проще


3-1259929546
12
2009-12-04 15:25
2011.05.29
Никто не пробовал свое окно из расширенной процедуры показать?