lua-users home
lua-l archive

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

do...end has nothing to do with a closure. A closure is an 'instance' of function, thus it's created once in any of your examples. In the first case it doesn't contain any upvalues in Lua 5.1, while it does in 5.2. In short, the 2) is faster.

I'd do it this way:

local function fact(n)
	if n == 0 then return 1 end
	return n * fact(n-1)
_G.fact = fact

Best regards,
Sergey Rozhenko