zhanghaodx082
我爱吃火锅
采纳率33.3%
2016-04-11 13:04 阅读 2.2k

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

5

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条回答 默认 最新

  • wildwind79 Wildwind79 2016-04-12 01:49

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

    点赞 评论 复制链接分享
  • qq_27437843 观物 2019-04-09 15:45
    local f, g
    
    f = function()
        print("Hello f1!");
        g()
    end
    
    g = function()
        print("Hello g1!");
    end
    
    f()
    

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

    点赞 评论 复制链接分享

相关推荐