gpt4 book ai didi

function - Lua:本地函数的作用域

转载 作者:行者123 更新时间:2023-12-04 16:05:39 25 4
gpt4 key购买 nike

我对 Lua 中的本地函数有点困惑。请看下面这个简化的例子。

function test()
local function f()
print("f")
g()
end

local function g()
print("g")
end

f()
end

test()

运行此代码时,我在函数“f”中遇到错误,因为函数“g”是一个 nil 值。根据我的理解,一旦代码到达对函数“g”的调用,这两个函数都应该被声明,并且由于两个函数还没有到达它们所在块的末尾(函数“test”),它们仍然应该是无障碍。当将函数声明为全局函数时,此代码工作正常,我真的不知道为什么它不适用于本地函数。 “Lua 编程”一书也没有帮助我。

最佳答案

local function g() <BODY> end相当于 local g; g=function () <BODY> end .

f ,名称g被解析为全局,因为 local g出现在 f 之后结束了。这是错误消息告诉我们的:

attempt to call a nil value (global 'g')

尝试定义 g之前 f .

关于function - Lua:本地函数的作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48867596/

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