有没有办法在 Lua 中以任意顺序放置局部函数?

Is there a way to put local functions in any order in Lua?

有一点似乎 Lua 与我习惯的语言不同,那就是变量和函数声明的顺序很重要。在函数中,您无法访问局部变量在函数之后声明的。例如:

local function foo()
 return bar
end
local bar = 4
print(foo()) -- prints nil instead of 4

如果您尝试从在它之前声明的函数访问局部函数,情况也是如此。

在某些情况下,如果您注意以正确的顺序声明事物,这一切都可以解决。但是,如果您有两个或多个函数都需要相互调用怎么办?这些函数是否必须是全局的,或者有什么方法可以用局部函数做到这一点?

好的,我解决了。这只是在定义事物之前声明它们的问题。我不确定它是否适用于函数,但我应该知道。

local foo, bar
function foo(a)
 print 'foo'
 if a == 3 then
  bar(4)
 end
end
function bar(b)
 print 'bar'
 if b == 4 then
  foo(2)
 end
end
foo(3)
-- foo
-- bar
-- foo