**Lua中是否存在前向声明?**

我在Lua中编写了很多调用彼此的函数。

在Lua中是否有"前向声明"的概念?

这将允许我声明所有没有实现的函数,然后稍后再实现它们。这样我就可以摆脱函数顺序的问题了。

点赞
用户8621712
用户8621712

是的,可见性是从顶部到底部的。 您可以声明没有值的本地变量。

local func  - 前置声明。 `local func = nil` 相同。

local function func2() - 假设您无法将此函数向下移动。
    返回 func() - 在这里使用
end

function func() - 在这里定义
    返回 1
end
2021-01-22 17:32:26
用户7396148
用户7396148

你可以在一个表内定义你的函数。

local lib = {}

function lib.func2()
    return lib.func()
end

function lib.func()
    return 1
end

这样可以减少在文件顶部需要声明的特定内容。但这会增加索引表的成本,这是值得注意的。

这也会暴露函数,如果你要返回库的话,这可能不是期望的,因为一些函数可能只应该在文件代码中“私有”。在这种情况下,我们可以添加第二个表

local lib = {}
local private = {}

function lib.func2()
    return private.func()
end

function private.func()
    return 1
end

return lib
2021-01-22 18:02:51