[LG] Compilation de fonction 'sans retour', ...
Bonjour à tous!
Ceci est plus une remarque qu'une question...
Une fonction est censée renvoyer un résultat, pourtant, si on ne met pas de renvoi dans le code, cela compile! Pas que ça m'embête, mais ça m'a surpris!!!
De plus, pour moi, une fonction est comme une valeur, pourtant juste une valeur sur une ligne donne une erreur à la compilation, pas une fonction!
Mais ... Un petit exemple vaut mieux qu'un long discours :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
program exple;
function a : integer;
begin
writeln('On est dans a, sans a:=...');
readln;
end;
function b : integer;
begin
writeln('Entree dans b');
b:=3;
readln;
end;
BEGIN
a;
b; {Ceci compile, par contre, " 3; " ne compile pas!}
writeln(b);
readln;
END. |
Bon ... Je sais, ce code ne sert à rien!
Mais, par contre, je trouve bizzarre qu'il compile : dans la fonction a, il n'y a pas de a:=..., comment cela se fait-il?
Et... pourquoi a; ou b; compile, alors que ce sont des fonctions et pas des procédures?
Bon ... C'est pas trop gênant, hein! Juste un peu perturbant, la première fois qu'on s'en rend compte!
Merci! A bientot!