ref arguments
Steven Schveighoffer
schveiguy at yahoo.com
Mon Sep 21 08:43:28 PDT 2009
On Mon, 21 Sep 2009 11:12:49 -0400, #ponce <aliloko at gmail.com> wrote:
> Is there a reason to use ref instead of in, inout or out ?
> I'm using D1 and it's not in the spec.
ref and inout are synonymous, ref is preferred, as inout is essentially a
defunct keyword.
in means that it's a reference that cannot be changed. In D1, it means
you cannot change the value, but if the value contains a reference to
something else (like an array), you can change what it points to. In D2,
it is synonymous with ref const scope (although the scope attribute
doesn't yet mean anything), so you cannot change anything it points to.
out means that it's a reference that you are always going to overwrite. I
believe the compiler even initializes the value for you upon function
entry.
So in summary:
inout: don't use it.
ref: Use this for pass by reference for a value that you may or may not
change.
in: Use this for pass by reference for a value that you won't change
out: Use this for pass by reference for a value that you will *always*
change.
-Steve
More information about the Digitalmars-d-learn
mailing list