Default parameter/pl

From Lazarus wiki
Revision as of 15:27, 30 August 2020 by Slawek (talk | contribs) (tłumaczenie na j. polski)

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

A default parameter also referred to as optional argument (or default argument) is a function or procedure parameter that has a default value provided to it. If the programmer does not supply a value for this parameter, the default value will be used. If the programmer does supply a value for the default parameter, the programmer-supplied value is used.

The programmer can extend an existing function or procedure by adding some parameters that have default value instead of writing an identical method with different parameters.

Beware: Once in a parameter list an optional parameter is defined, all following parameters have to be optional, too. A mandatory parameter must not have a later position than an optional parameter.

Parametr domyślny nazywany również argumentem opcjonalnym (lub argumentem domyślnym) to parametr funkcji lub procedury, który ma podaną wartość domyślną. Jeśli programista nie poda wartości tego parametru, zostanie użyta wartość domyślna. Jeśli programista poda wartość parametru domyślnego, używana jest wartość podana przez programistę.

Programista może rozszerzyć istniejącą funkcję lub procedurę, dodając parametry, które mają wartość domyślną, zamiast pisać identyczną metodę z różnymi parametrami.

Uwaga: gdy na liście parametrów zostanie zdefiniowany opcjonalny parametr, wszystkie następujące parametry również muszą być opcjonalne. Obowiązkowy parametr nie może mieć pozycji późniejszej niż parametr opcjonalny.

Przykład 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;

Parametr domyślny jest używany w miejscu brakującego parametru końcowego, dlatego

  • wywołanie w programie deadlineDay(5) powoduje wywołanie deadlineDay(5, 0)
  • wywołanie w programie deadlineDay(5, 1) rzeczywiście wywołuje deadlineDay(5, 1)