Default parameter/ru

From Lazarus wiki
Jump to navigationJump to search

Deutsch (de) English (en) español (es) suomi (fi) français (fr) polski (pl) русский (ru)

Параметры по умолчанию (также называемые необязательными аргументами или аргументами по умолчанию) являются параметрами функции или процедуры, которые содержат значения по умолчанию. Если программист не указал значение для такого параметра, то будет использоваться значение по умолчанию. В случае, если программист указал значение параметра, то использоваться будет указанное программистом значение.

Программист может расширить существующую функцию или процедуру путем добавления некоторого количества параметров, которые будут иметь значения по умолчанию, вместо написания аналогичной функции или процедуры с различным количеством параметров.

Будьте осторожны: если хоть один параметр определен как необязательный, то все последующие параметры тоже будут необязательными. Обязательный параметр не должен идти после необязательного.

Пример deadlineDay

{$mode objfpc}

uses SysUtils, DateUtils;

function deadlineDay(day: integer; month: integer = 0): TDateTime;
var
  n: TDateTime;
  y, m, d: word;
begin
  n := now();
  DecodeDate(n, y, m, d);
  if month = 0 then
  begin
    if d > day then
    begin
      n := IncMonth(n);
      DecodeDate(n, y, m, d);
    end;
  end
  else
  begin
    if month < m then
    begin
       n := IncYear(n);
    end;
    decodeDate(n, y, m, d);
    m := month;
  end;
  d := day;
  result := EncodeDate(y, m, d);
end;

Необязательный параметр используется вместо отсутствующего завершающего параметра в вызове

  • при вызове функции deadlineDay(5) фактически вызывается deadlineDay(5, 0)
  • при вызове функции deadlineDay(5, 1) происходит непосредственный вызов deadlineDay(5, 1)