lua-users home
lua-l archive

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


On 24 November 2015 at 16:52, Roberto Ierusalimschy
<roberto@inf.puc-rio.br> wrote:
> What is wrong with the following proposal?
>
>   local <some mark to be invented> name = exp
>
> Unlike a regular 'local' declaration, this one must define only one
> variable and it must be initialized. (Both restrictions could be easily
> removed; they are more about programming style.)
>
> When the local 'name' goes out of scope, then:
>
> 1 - if its value is a function, that function is called (no parameters)
> 2 - if its value is a table/userdata, its __close (or some other new
> name) metamethod, if present, is called.
>
> Otherwise, 'name' is like any other local variable.
>

I haven't followed the whole conversation so apologies if I have got
this wrong. If the aim is to provide a 'finally' type feature then an
important aspect is that the finally code must execute even when
exceptions occur. In the above proposal how will Lua ensure that the
function will always be called when the block exits even if there was
an exception which jumped down the stack?

Regards
Dibyendu