local f,g
local function f()
print("Hello f1!");
g()
end
local function g()
print("Hello g1!");
end
f()
如上,运行的时候为何会报错?实际上,我理解最开始已经声明了函数g,所以函数f中调用g的时候是应该可以找到的~
报错如下
Hello f1!
lua: localFunction.lua:4: attempt to call upvalue 'g' (a nil value)
stack traceback:
localFunction.lua:4: in function 'f'
localFunction.lua:10: in main chunk
[C]: ?
执行的时候g还未初始化。函数g的定义放前面。
local f, g
f = function()
print("Hello f1!");
g()
end
g = function()
print("Hello g1!");
end
f()
这样写,才是你想要的预定义方式。你的写法,相当于开头只是声明,后面又重新定义,所以,在调用f的时候,g是还没定义的。