Lua函数声明

我对在Lua中声明函数感到困惑。我想知道的是函数定义在文件中的顺序。在我的示例中,示例1起作用,而示例2无法编译。

示例1

- 这工作,示例1
function finddir(lpath)
local localfs = require“luci.fs”

if localfs.isdirectory(lpath)then
打印“我们有目录”
其他
打印“未找到目录”
结
end

** local ltest = finddir(“/ proc / net /”)**
- 结束 -

示例2

- 这个样本无法编译,样本2
** local ltest = finddir(“/ proc / net /”)**

function finddir(lpath)
local localfs = require“luci.fs”

if localfs.isdirectory(lpath)then
打印“我们有目录”
其他
打印“未找到目录”
结
end
- 结束 -
点赞
用户1009479
用户1009479

Lua 中的函数是一等值。

在第一个例子中,函数被定义,换句话说,变量 finddir 的值是类型为 function 的值。因此可以调用它。

在第二个例子中,当你调用该函数时它并未被定义,换句话说,变量 finddir 的值为 nil,因此你不能调用它。

这跟其他类型并没有太大的区别,例如:

n = 42
local a = n + 3  --没问题

local a = n + 3  --错误,n 是 nil
n = 42
2014-03-04 02:14:32