lua-users home
lua-l archive

Re: Syntax addition: with ... do

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


On 9/15/06, Jerome Vuarand <jerome.vuarand@ubisoft.com> wrote:
You can try something like that :

-- Start of Lua ----------------------------
with = function(context)
...
end

endwith = function()
...
end

-- You can then write
with (object) do
name=parent.name..name
end
endwith()

-- End of Lua ------------------------------

Globals can still be accessed directly if not overriden in object, or through _G inconditionnaly. Endwith is the only syntactic drawback, you have to explictly restore the environment. As the do/end is not necessary, you can just write:

with (object)
name=parent.name..name
endwith()

Even that could be encapsulated. Something like:

function withblock (context, function)
with (context)
function()
endwith()
end

used like:

withblock (object, function () name = parent.name..name end)

- Syntax may be a bit rusty, but it's possible to automate the restoration of the environment in this way. I guess maybe the identifier 'function' is not allowed within function, there may be some other caveats too.

Hugh O'Byrne.


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