gpt4 book ai didi

lua - 在另一个本地函数中调用本地函数

转载 作者:行者123 更新时间:2023-12-02 00:58:56 24 4
gpt4 key购买 nike

以下代码片段

local function foo ()
print('inside foo')
bar()
end

local function bar ()
print('inside bar')
end

foo()

产生以下输出

inside foo
lua: teste.lua:3: attempt to call global 'bar' (a nil value)
stack traceback:
teste.lua:3: in function 'foo'
teste.lua:10: in main chunk
[C]: ?

如果我从 bar 声明中删除修饰符 local ,那么它会按预期工作,输出

inside foo
inside bar

如何在 foo 中调用 bar 并将两者保持为 local

最佳答案

您需要在foo之前定义bar

local function bar ()
print('inside bar')
end

local function foo ()
print('inside foo')
bar()
end

foo()

在您的示例中,当您位于 foo 函数内部时,就 Lua 而言,bar 还不存在。这意味着它默认为值为 nil 的全局变量,这就是您收到错误“尝试调用全局‘bar’(nil 值)”的原因。

如果你想在 bar 之前定义 foo 并将它们都保留为局部变量,则需要先声明 bar 变量。

local bar

local function foo ()
print('inside foo')
bar()
end

function bar ()
print('inside bar')
end

foo()

在这个例子中,如果你想向自己证明bar是一个局部变量,可以在最后添加以下代码:

if _G.bar ~= nil then
print("bar is a global variable")
else
print("bar is a local variable")
end

这会检查“bar”是否是全局变量表_G中的键。

关于lua - 在另一个本地函数中调用本地函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52520090/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com