The next iteration of scope

Zach the Mystic via Digitalmars-d digitalmars-d at puremagic.com
Mon Mar 16 12:42:59 PDT 2015


On Monday, 16 March 2015 at 17:00:12 UTC, Marc Schütz wrote:
> BUt there is indeed still some confusion on my side. It's about 
> the question whether `this` should implicitly be passed as 
> `scope` or not. Because if it is, scope members are probably 
> useless, because they are already implied. I think I should 
> remove this suggestion, because it would break too much code 
> (in @system).

I always tend to think of member functions as if they weren't:

struct S {
   T t;
   ref T fun() return {
     return t;
   }
}

In my head, I just translate fun() above to:

ref T fun(return S* __this) {
   return __this.t;
}

Therefore whatever the scope of `__this`, that's the scope of the 
return, just like it would be for any other parameter. Then:

S s;
s.fun();

... is really just `fun(s);` in disguise. That's why it's hard 
for me to grasp `scope` members, because they seem to me to be 
just as scope as their parent, whether global or local. How a 
member could be scope when the parent is global is hard for me to 
imagine.


More information about the Digitalmars-d mailing list