2

Lua 与我习惯的语言不同的一件事是,放置变量和函数声明的顺序很重要。在函数中,您不能访问在函数之后声明的局部变量。例如:

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

如果您尝试从之前声明的函数访问本地函数,情况也是如此。

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

4

1 回答 1

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
于 2016-12-10T00:13:15.510 回答