Default parameter/fr

From Lazarus wiki
Revision as of 07:22, 12 February 2020 by Trev (talk | contribs) (Fixed syntax highlighting)
(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)

Un paramètre par défaut aussi appelé paramètre optionnel (ou argument par défaut) est un paramètre de fonction or procédure auquel une valeur par défaut est fournie. Si le prrogrammeur ne donne pas de valeur à ce paramètre, la valeur par défaut est utilisée. Si le programmeur passe une valeur, celle-ci est utilisée. Le programmeur peut étendre un routine existante en y ajoutant des paramètres ayant une valeur par défaut au lieu d'écrire une routine identique avec des arguments différents. Cela est utile quand pour l'un des paramètres, la valeur par défaut est fortement probable.

Seules les valeurs de type simpe sont permises. Attention à l'ordre des paramètres par défaut, ils sont tous en fin de signature, après les paramètres sans valeur par défaut et doivent être organisés par ordre décroissant de probabilité d'emploi de la valeur par défaut. Le dernier paramètre par défaut de la liste ayant le plus de chance de prendre sa valeur par défaut que le premier.

Exemple deadline_day

uses SysUtils, DateUtils


function deadline_day( 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 n := IncYear( n );
       DecodeDate( n, y, m, d );
       m := month;
     end;
    d := day;
   result := EncodeDate( y, m, d );
end;

Le paramètre par défaut est utilisé à la place du paramètre manquent en queue dans un appel.

  • dans un programme, appeler deadline_day( 5 ); //-> appelle deadline_day( 5, 0 );
  • dans un programme, appeler deadline_day( 5, 1 ); //-> appelle deadline_day( 5, 1 );