Предположим, у меня есть объект, который я хотел бы скопировать.Справочный параметр Delphi/параметр по умолчанию
interface
type
TPerson = Class(TObject)
public
first_name: string;
last_name: string;
address: string;
public
constructor Create;
procedure CopyTo(var s1, s2, s3: string);
...
implementation
...
procedure TPerson.CopyTo(var s1, s2, s3: string)
begin
s1 := first_name;
s2 := last_name;
s3 := address;
end;
end.
Тогда я могу использовать мой класс, как это:
...
var
name1, name2, address: string;
begin
person := TPerson.Create;
person.first_name = 'John';
person.last_name = 'Doe';
person.address = '10 Downing Street';
person.CopyTo(name1, name2, address);
end;
Но если я не заинтересован в копировании адрес, я хотел бы иметь возможность использовать его как это
...
var
name1, name2: string;
begin
person := TPerson.Create;
person.first_name = 'John';
person.last_name = 'Doe';
person.address = '10 Downing Street';
person.CopyTo(name1, name2);
// Some bad legacy code that has a lot more unstructured fields
end;
Я подумывал написать перегрузку CopyTo(var s1, s2: string)
или использовать столько переменных буфера, сколько числа строк, которые я хочу забыть?
Есть ли более элегантный способ?
Спасибо.
Я не вижу альтернативы перегруженным методам –
Другой альтернативой было объявить строку 'dummy' в разделе' var' и вызвать 'CopyTo (name1, name2, dummy)', который не повлияет на остальную часть кода. –
Но вопрос в основном касался «параметров по умолчанию для параметров, которые я не использую», как сказал Роб Кеннеди. –