Difference between revisions of "Default parameter"
(indentation) |
m (Fixed syntax highlighting) |
||
(One intermediate revision by one other user not shown) | |||
Line 7: | Line 7: | ||
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. | 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 <code>deadlineDay</code> == | == Example <code>deadlineDay</code> == | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
{$mode objfpc} | {$mode objfpc} | ||
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 callsdeadlineDay(5, 0)
- in program call
deadlineDay(5, 1)
does indeed calldeadlineDay(5, 1)