Чтобы инициализировать записи Delphi, я всегда добавлял метод (класс или объект), который инициализировал бы известные хорошие значения по умолчанию. Delphi также позволяет определять записи "конструкторы" с параметрами, но вы не можете определить свой собственный конструктор без параметров.
TSomeRecord = record
Value1: double;
Value2: double;
procedure Init;
end;
procedure TSomeRecord.Init;
begin
Value1 := MaxDouble;
Value2 := Pi;
end;
Учитывая вышеприведенную запись, нет предупреждения о том, что запись не была инициализирована. Разработчики могут игнорировать вызов Init
в записи. Есть ли способ автоматически инициализировать записи по умолчанию, потенциально больше, чем просто FillChar
;
Например
var
LSomeRecord: TSomeRecord
begin
// someone forgot to call LSomeRecord.Init here
FunctionThatTakesDefaultSomeRecord(LSomeRecord);
end;
Как автоматически записать запись в мои настройки по умолчанию?
[Примечание] Я не хочу изменять проблему после ответа. Любые читатели должны читать комментарии о лучших методах использования методов класса для инициализации вместо метода мутирующих объектов.