Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 在卢阿,是否有远期申报?_Function_Lua_Forward Declaration - Fatal编程技术网

Function 在卢阿,是否有远期申报?

Function 在卢阿,是否有远期申报?,function,lua,forward-declaration,Function,Lua,Forward Declaration,我用lua编写了很多相互调用的函数 在lua中是否有“向前宣言”这样的概念 这将允许我声明所有没有实现的函数,然后在以后实现它们。然后,我将摆脱函数顺序问题。是的,可见性从上到下。 可以声明没有值的局部变量 localfunc——转发声明`local func=nil`是相同的。 本地函数func2()--假设无法将此函数下移。 return func()--此处使用 结束 函数func()--在此处定义 返回1 结束 您可以在表中定义函数 locallib={} 函数lib.func2() 返

我用lua编写了很多相互调用的函数

在lua中是否有“向前宣言”这样的概念


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

是的,可见性从上到下。 可以声明没有值的局部变量

localfunc——转发声明`local func=nil`是相同的。
本地函数func2()--假设无法将此函数下移。
return func()--此处使用
结束
函数func()--在此处定义
返回1
结束

您可以在表中定义函数

locallib={}
函数lib.func2()
返回lib.func()
结束
函数lib.func()
返回1
结束
这将最小化文件顶部所需的特定声明。 它确实增加了索引表的成本,这可能是相关的,值得注意

如果要返回库,这也会公开函数,如果某些函数对文件中的代码是“私有”的,则可能不需要返回库。在这种情况下,我们可以添加第二个表

locallib={}
本地私有={}
函数lib.func2()
return private.func()
结束
函数private.func()
返回1
结束
返回库

晶莹剔透,非常优雅!对于对称性,也将
func2
声明为local。谢谢,lhf,这样会更有意义这也是一种很好的方法,例如,当您将其导出为库时。然而,您应该提到调用
lib.func()
会稍微贵一点,因为它可能是本地调用。现在也可以覆盖它。(编辑:已经提到了)这是一个公平的观点,我没有想到这一点