lua初学者 关于local函数的一个问题 5C

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]: ?

2个回答

执行的时候g还未初始化。函数g的定义放前面。

zhanghaodx082
我爱吃火锅 但是在调用之前已经做了声明,难道lua语言没有声明这个概念?
4 年多之前 回复
local f, g

f = function()
    print("Hello f1!");
    g()
end

g = function()
    print("Hello g1!");
end

f()

这样写,才是你想要的预定义方式。你的写法,相当于开头只是声明,后面又重新定义,所以,在调用f的时候,g是还没定义的。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问