Default parameter/ru

From Free Pascal wiki
Revision as of 17:53, 30 January 2018 by Useroflazarus (talk | contribs) (Created page with "{{Default parameter}} Параметры по умолчанию (также называемые необязательными аргументами или аргумен...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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)