On Tue, 28 Jun 2016, Jürgen Hestermann wrote:
Am 2016-06-28 um 01:13 schrieb David Emerson:
The source of my confusion -- and I suspect that of many others -- is that
I always assumed a function result was treated like a local variable within
the function, rather than a parameter to the function.
Since managed types are automatically initialized when they are local
variables, I assumed a function result was the same.
Unfortunately, the documentation does not make this sufficiently clear in
describing managed types. I guess I should file a documentation bug.
Exactly my opinion too.
Especially, because it behaved differently with Free Pascal versions prior to
3!
And it does not behave like a function parameter, it behaves like a *var*
parameter.
All other types of parameters behave differently!
And while a var parameter can *only* be assigned to a variable (so that it is
clear
that an existing variable is used) a function result can also be used in an
expression which makes it silently mutate into a global variable! What a
mess!
And for local variables I can easily set a default value in the declaration
but not for the function result.
I have to remind me not to forget this in the code.
This has been so since day 1 in Pascal.
Any behaviour other than that was entirely coincidental.
Michae.
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal