lua-users home
lua-l archive

RE: Globals vs. Locals

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


On Friday, August 05, 2005 10:49 AM, Mark Hambur wrote:
> 
> Somewhat unpolished idea that just came to me when thinking about requiring
> globals in scripts to be declared. What if one could write something like:
> 
> local for global table, string
> 
> This would be equivalent to:
> 
> global table, string
> local table, string = table, string
> 
> This would encourage people to build scripts that cache global lookups in
> local variables.
C# provides an overloaded feature using the 'using' [1] keyword that is pretty
nice - sugar-wise; with some adaptation a feature like that provides a nice
balance and can solve to a certain degree the global versus local debate.
The usage might vaguely resemble like this:
<vaporware lua code>
-- illustration (1)
using ( table, string, ... ) 
do
	-- any variable access in this block implicitly is
 -- limited to those tables and variables specified
 -- in the 'using' clause, which as per Mark's suggestion
 -- get 'localized'.
end
-- illustration (2)
function foo(...) do 
 -- something
end
-- somewhere else, foo could be invoked like this:
foo (a1, a2, a3) using (table, string) 
-- foo's access to variables are limited to those specified
-- in the using clause. And here the idea is that 'using' 
-- clause is optional. If not specified foo has access to
-- pretty much what it can normally.
</vaporware lua code>
I wonder if something like this could be achieved using LHF's proposed
preprocessor and the setenv/getenv functions.
I was just trying out my 'syntax engineering' hat. I will remove it now ;-)
[1]
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vcl
rfUsing.asp

AltStyle によって変換されたページ (->オリジナル) /