I think scope needs to be documented better in the docs. I didn't even
know it could be used in the parameter list, or what it does for that
matter.

On 11/28/10, Jonathan M Davis <jmdavisp...@gmx.com> wrote:
> On Sunday 28 November 2010 05:28:45 Andrej Mitrovic wrote:
>> AFAIK "in" will guarantee you can't change a variable, even when using
>> arrays, e.g.:
>>
>> void foo(in int[] a) {
>>    int[] b;
>>    a[0] = 1; // won't compile
>>    a = b;     // won't compile (I think?)
>> }
>>
>> void foo(int[] a) {
>>    int[] b;
>>    a[0] = 1; // compiles, and changes are reflected in the caller
>>    a = b;     // compiles, but it doesn't change "a" in the calling code
>> }
>>
>> I don't have DMD on this PC so I haven't tested it.
>
> Well, in is essentially an alias for const scope, so no, you can't change
> any
> variables marked in. And since const is transitive, that includes anything
> that
> the variable references. So, arrays marked with in are fully const and
> cannot be
> altered in any way.
>
> - Jonathan M Davis
>

Reply via email to