2014-03-04 178 views
2

我對lua中函數的聲明感到困惑。我想知道的是函數定義在文件中的順序。在我的例子中,樣本1工作在樣本2不能編譯的地方。Lua函數聲明

樣品1個

--This works, sample 1 
function finddir(lpath) 
local localfs = require "luci.fs" 

if localfs.isdirectory(lpath) then 
    print "we have directory" 
    else 
    print "Directory not found" 
    end 
end 

**local ltest = finddir("/proc/net/")** 
-- END -- 

樣品在Lua 2個

--This Sample fails to compile, Sample 2 
**local ltest = finddir("/proc/net/")** 

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

if localfs.isdirectory(lpath) then 
    print "we have directory" 
    else 
    print "Directory not found" 
    end 
end 
-- END -- 

回答

1

函數是第一級的值。

在第一個示例中,定義了該函數,換句話說,變量finddir的值爲function。所以你可以稱它。

在第二個示例中,函數尚未在您調用時定義,換句話說,變量finddir的值爲nil,因此您無法調用它。

它不與其他類型的不同,e.g:

n = 42 
local a = n + 3 --fine 

VS

local a = n + 3 --error, n is nil 
n = 42