- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Opposite of Default Local
So, just some syntactical sugar.
It would be really nice if there was an opposite of declaring local variables for functions.
i.e. instead of:
example= function({a,b}, {c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w},
c = a+b;
d = c+a;
//...
x = v+w;
y = x+b;
);
print(x,y);
I could write:
example= function({a,b}, {Default Local, x, y},
c = a+b;
d = c+a;
//...
x = v+w;
y = x+b;
);
print(x,y);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Opposite of Default Local
Another example:
x="global scope";
y="global scope";
Names Default to Here(1);
x="here scope";
y="here scope";
print(::x, x, ::y, y);
f = function({}, {Default Local, x},
x="here scope replaced";
y="function scope";
print(x, y);
);
f();
//x != y but it does
print(x, y);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Opposite of Default Local
I think if you scope everything, you may get what you want.. Correct me if I'm not following but....For instance
::x="global scope";
::y="global scope";
Names Default to Here(1);
x="here scope";
y="here scope";
print(::x, here:x, ::y, here:y);
f = function({}, {Default Local},
here:x="here scope replaced";
::x = "global scope replaced";
x = "function scope x";
y = "function scope y";
print(here:x, ::x, x, y);
);
f();
print(x, y); // will be whatever was assigned to these vars in the HERE namespace.
print(::x, ::y); // will be whatever was assigned to these vars in the GLOBAL namespace.
// no way of accessing local vars (actually the point of local).
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Opposite of Default Local
I've been using explicit locals in functions. I think I'll try Default Local in my next project.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Opposite of Default Local
I've never used here:x before, but that syntax makes total sense. Thanks!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Opposite of Default Local
Same goes with local:x if you'd rather explicitly scope on the fly.
f = function({}, {},
x = "global scope replaced";
local:x = "function scope x";
local:y = "function scope y";
print(::x, local:x, y);
);
f();
You have to remember to call ::x explicitly because of the scoping rules for unscoped variables.