[optimisation] var ou pas var dans procedure ?
hello :)
supposons que l'on ait une procedure
Proc(x1 : type1; x2 : type2; ......);
et que certaines variables xi ne sont pas modifiées à l'intérieur de la procédure.
Est-il préférable de les mettre en passage par variable même si on ne les modifie pas ?
(à mon avis oui car on ne copie pas la variable mais delphi fait comme pour un pointeur, mais si je pose la question c'est parce que je vois rarement les passages par variable)
merci d'avance pour vos réponses !
Passage par valeur ou référennce
Si vous voulez ne pas travailler sur l'original:
procedure MaProc(MonParametre: UnType)
Si vous voulez travailler sur l'original et le modifier (ex: un gros tableau)
procedure MaProc(var MonTableau: UnTypeDeTableau)
Si vous voulez vous épargner la création d'une copie tout en empêchant de modifier votre var:
procedure MaProc(const MonParametre: UnType)
Il est possible de programmer (et même conseillé) en n'utilisant var et const. C'est indispensable pour coder une fonction d'échange:
Code:
1 2 3 4 5 6 7 8 9
|
procedure Swap(a, b: Integer);
var
t: integer;
begin
t:=b;
b:=a;
a:=t;
end; |
Ceci ne marchera pas car vous avez travaillé sur une copie de a et b
(piège classique)
Il faut écrire:
Code:
1 2 3 4 5 6 7 8 9
|
procedure Swap([var] a, b: Integer);
var
t: integer;
begin
t:=b;
b:=a;
a:=t;
end; |