Assigning a scope variable to an outer-scope variable is allowed?
"のしいか (noshiika)"
noshiika at gmail.com
Sat Jul 7 21:04:49 PDT 2007
Gregor Richards wrote:
>> const(int[]) g;
>> void foo(in int[] a) { // in == final const scope
>> g = a; // a is scope?
>> }
>
> Assigning a scope object to a variable which is not in that scope is
> valid, it's just usually stupid. One use where it's necessary (though a
> bit unclean) is if you have a global variable which you want to
> temporarily set to a scope object. You set it at the beginning of your
> scope, then reset it at the end, so it's never referring to an invalid
> object.
>
> That is to say: You're right, that's not allowed. But it's not allowed
> due to it being impossible at /runtime/, not any problems at /compile/
> time. And adding a warning would make legit uses a PITA.
>
Well, then isn't it inconsistent with what Walter said before?
news://news.digitalmars.com:119/f2iism$tco$1@digitalmars.com
Walter Bright wrote:
> scope - the function will not keep a reference to the parameter's data
> that will persist beyond the scope of the function
>
> For example:
> int[] g;
>
> void foo(in int[] a)
> {
> a = [1,2]; // error, a is final
> a[1] = 2; // error, a is const
> g = a; // error, a is scope
> }
More information about the Digitalmars-d
mailing list