Вопрос, который вы задаете, относится к читабельности кода, и существует решение, позволяющее избежать необходимости создания переменной.VCL использует это решение с записями TPoint
и TRect
.
Рассмотрим определение TPoint
:
type
TPoint = record
X,Y integer
end;
Чтобы передать TPoint
в процедуру, которую вы могли быdo:
var
MyPoint : TPoint;
begin
MyPoint.X := 5;
MyPoint.Y := 7;
DoSomething( MyPoint );
end;
Это нормально, но занимает 3 строки, когда одна также возможна с использованием фабричной функции Point
:
begin
DoSomething( Point(5,7) );
end;
В Delphi функция была объявлена следующим образом:
function Point( X, Y : integer ) : TPoint;
begin
Result.X := X;
Result.Y := Y;
end;
Затем вы можете вызвать эту функцию «inline» для создания записи «на лету», чтобы быстро. Вы увидите, что то же самое было предоставлено для TRect
и т. Д. Я часто ставлю такиеЗаводская функция вместе с объявлением записи выглядит следующим образом, даже если я пока не планирую их использовать:
type
TMyRecord = record
A : integer;
B : string;
end;
function MyRecord( A : integer; const B : string ) : TMyRecord;
begin
Result.A := A;
Result.B := B;
end;
Использование этого метода может улучшить читаемость кода, а также гарантирует, что вы не случайноне указывать элемент записи.