Итак, какой будет предпочтительный способ инициализации записей?
С помощью функции factory:
TMyRecord = record
valueX: integer;
valueY: integer;
end;
function MyRecord(const AValueX, AValueY: integer): TMyRecord;
begin
result.valueX := AValueX;
result.valueY := AValueY;
end;
var
myrec: TMyRecord;
begin
myrec := MyRecord(1, 2);
end;
или конструктор:
TMyRecord = record
valueX: integer;
valueY: integer;
constructor Create(const AValueX, AValueY: integer);
end;
constructor TMyRecord.Create(const AValueX, AValueY: integer);
begin
self.valueX := AValueX;
self.valueY := AValueY;
end;
var
myrec: TMyRecord;
begin
myrec := TMyRecord.Create(1, 2);
end;
Я чувствую, что объекты конструктора более инкапсулированы, но это облегчает путаницу при чтении кода. Это делает его похожим на класс, которому не хватает свободного звонка. Это также больше, чтобы ввести...
Почему вы предпочитаете друг друга?