On Mon, 21 Sep 2009 11:12:49 -0400, #ponce <alil...@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

Reply via email to