|
Bad on LuaJIT. If you're gonna do that I recommend you use (function(...) end)(...), e.g.
On 15/06/15 03:16 PM, Sven Olsen wrote:
[It's a shame that declaring blocks that limit temporary variable
scope isn't more popular, perhaps the extra two lines and bonus
character in 'end' bothers OCD people like myself.
I've started writing do-blocks structured like the following:
local draw_list do
<other locals and definitions>
draw_list= function()<drawing code>endend
The convention here is that the do block acts more or less like a 1 time function call who's purpose is to define the local(s) on the line where it starts. Feels like a useful pattern when I have a bunch of function definitions that all want their own copies of common variable names like 'x','y' etc.
-Sven
local draw_list = (function(...)
<stuff>
return function(list)
<drawing code>
end
end)(...) -- pass our chunk's vargs to the function
This lets LuaJIT know draw_list is a constant and make your code faster. (direct jump vs indirect jump)