Difference between revisions of "Default parameter"

From Free Pascal wiki
Jump to navigationJump to search
(Created page with "{{MenuTranslate| page=Default parameter}} A default parameter also referred to as optional argument (or default argument) is a function or [[Procedure|procedure...")
 
m (Fixed syntax highlighting)
 
(6 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{MenuTranslate| page=Default parameter}}
+
{{Default parameter}}
  
 
A default parameter also referred to as optional argument (or default argument) is a [[Function|function]] or  
 
A default parameter also referred to as optional argument (or default argument) is a [[Function|function]] or  
[[Procedure|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.  
+
[[Procedure|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.
  
<syntaxhighlight>
+
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.
  
uses SysUtils, DateUtils
+
== Example <code>deadlineDay</code> ==
  
 +
<syntaxhighlight lang=pascal>
 +
{$mode objfpc}
  
function deadline_day( day: integer; month: integer = 0 ) : tDateTime;
+
uses SysUtils, DateUtils;
 +
 
 +
function deadlineDay(day: integer; month: integer = 0): TDateTime;
 
var
 
var
   n :TDateTime;
+
   n: TDateTime;
   y, m, d :word;
+
   y, m, d: word;
 
begin
 
begin
   n := now;
+
   n := now();
   DecodeDate( n, y, m, d );
+
   DecodeDate(n, y, m, d);
 
   if month = 0 then
 
   if month = 0 then
    begin
+
  begin
      if d > day then
+
    if d > day then
        begin
+
    begin
          n := IncMonth( n );
+
      n := IncMonth(n);
          DecodeDate( n, y, m, d );
+
      DecodeDate(n, y, m, d);
        end;
+
    end;
    end
+
  end
  else
+
  else
    begin
+
  begin
      if month < m then n := IncYear( n );
+
    if month < m then
      DecodeDate( n, y, m, d );
+
    begin
      m := month;
+
      n := IncYear(n);
    end;
+
    end;
    d := day;
+
    decodeDate(n, y, m, d);
  result := EncodeDate( y, m, d );
+
    m := month;
end;  
+
  end;
 +
  d := day;
 +
  result := EncodeDate(y, m, d);
 +
end;
 +
</syntaxhighlight>
  
</syntaxhighlight>
+
Default parameter is used in place of the missing trailing parameter in a call
 +
* in program call <code>deadlineDay(5)</code> effectively calls <code>deadlineDay(5, 0)</code>
 +
* in program call <code>deadlineDay(5, 1)</code> does indeed call <code>deadlineDay(5, 1)</code>

Latest revision as of 08:19, 12 February 2020

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.

Example 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;

Default parameter is used in place of the missing trailing parameter in a call

  • in program call deadlineDay(5) effectively calls deadlineDay(5, 0)
  • in program call deadlineDay(5, 1) does indeed call deadlineDay(5, 1)