Sign in Join
Wiki copytemporary

Default parameter/ru: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Default parameter/ru

OldNewLine
1+Параметры по умолчанию (также называемые необязательными аргументами или аргументами по умолчанию) являются параметрами [[Function/ru|функции]] или [[Procedure/ru|процедуры]], которые содержат значения по умолчанию. Если программист не указал значение для такого параметра, то будет использоваться значение по умолчанию. В случае, если программист указал значение параметра, то использоваться будет указанное программистом значение.
2+
3+Программист может расширить существующую функцию или процедуру путем добавления некоторого количества параметров, которые будут иметь значения по умолчанию, вместо написания аналогичной функции или процедуры с различным количеством параметров.
4+
5+*Будьте осторожны*: если хоть один параметр определен как необязательный, то все последующие параметры тоже будут необязательными. Обязательный параметр *не должен* идти после необязательного.
6+
7+## Пример `deadlineDay`
8+
9+``` pascal
10+{$mode objfpc}
11+
12+uses SysUtils, DateUtils;
13+
14+function deadlineDay(day: integer; month: integer = 0): TDateTime;
15+var
16+ n: TDateTime;
17+ y, m, d: word;
18+begin
19+ n := now();
20+ DecodeDate(n, y, m, d);
21+ if month = 0 then
22+ begin
23+ if d > day then
24+ begin
25+ n := IncMonth(n);
26+ DecodeDate(n, y, m, d);
27+ end;
28+ end
29+ else
30+ begin
31+ if month < m then
32+ begin
33+ n := IncYear(n);
34+ end;
35+ decodeDate(n, y, m, d);
36+ m := month;
37+ end;
38+ d := day;
39+ result := EncodeDate(y, m, d);
40+end;
41+```
42+
43+Необязательный параметр используется вместо отсутствующего завершающего параметра в вызове
44+
45+- при вызове функции `deadlineDay(5)` фактически вызывается `deadlineDay(5, 0)`
46+- при вызове функции `deadlineDay(5, 1)` происходит непосредственный вызов `deadlineDay(5, 1)`
47+
48+---
49+*From the Free Pascal wiki, page "Default parameter/ru", as it stood on 2020-02-12 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history