Call site 'ref'
Alex Rønne Petersen
xtzgzorex at gmail.com
Sun Jan 15 05:36:53 PST 2012
Hi,
I don't know how many times I've made the mistake of passing a local
variable to a function which takes a 'ref' parameter. Suddenly, local
variables/fields are just mutating out of nowhere, because it's not at
all obvious that a function you're calling is taking a 'ref' parameter.
This is particularly true for std.utf.decode().
Yes, I realize I could look at the function declaration. Yes, I could
read the docs too. But that doesn't prevent me from forgetting that a
function takes a 'ref' parameter, and then doing the mistake again. The
damage is done, and the time is wasted.
I think D should allow 'ref' on call sites to prevent these mistakes.
For example:
string str = ...;
size_t pos;
auto chr = std.utf.decode(str, ref pos);
Now it's much more obvious that the parameter is passed by reference and
is going to be mutated.
Ideally, this would not be optional, but rather *required*, but I
realize that such a change would break a *lot* of code, so that's
probably not a good idea.
Thoughts?
--
- Alex
More information about the Digitalmars-d
mailing list