i wondered strange behaviour in free pascal functions, described in docs.
it said, following code compiled/executed successfully:
function test : integer; begin test := 2; end; begin writeln(test()); end.
but if use function name test
in right side of equation, perform recursive loop.
so, pascal functions, 1 side, define variable name test
, type of function return value integer
. other side, can still call function (make recursive call using name).
why?! goal?
inside function's body there special variable name identical function name. used keep function result.
it introduced in original pascal syntax. later prevent inconveniences variable named result
introduced , alliance previous one:
test := 2; := result + 3; // here = 5;
so, now, test := 2;
, result := 2;
same.
in case of usage of function name @ right side of equation, interpreted variable, not function calls:
test := test + 1; // increments test value
but still can call function recursively using brackets:
test := test() + 1; // recursion
so, have 3 ways return value function (for example):
function test : integer; begin test := 2; // function result = 2 result := 2; // same previous exit(2); // sets function result 2 end exits end;
it method use.
Comments
Post a Comment