有没有办法在 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
有一点似乎 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