2017-07-22 109 views
1

如何從同一個目錄中的其他文件運行一個函數?需要文件Lua

實施例:

file1的:

function sleep(n) 
    local t = os.clock() 
    while os.clock() - t <= n do 
    -- nothing 
    end 
end 

file2的:

dofile('/barboszalib.lua') 

function DoSomething(target) 
print(target + 3) 
end 

while true do 
DoSomething(4) 
barboszalib.sleep(5) 
end 
+0

[SO Docs](https://stackoverflow.com/documentation/lua/1148/writing-and-using-modules#t=201707221630027879236) –

回答

1

file1的定義了一個名爲sleep一個全球功能。所以你必須撥打電話sleep(5)file2

barboszalib.sleep(5)失敗,因爲沒有名爲barboszalib的表。

如果你想文件1到庫中,這樣做:

文件1

local M={} 

function M.sleep(n) 
    local t = os.clock() 
    while os.clock() - t <= n do 
    -- nothing 
    end 
end 

return M 

和在文件2

local barboszalib=dofile('/barboszalib.lua') 
... 
barboszalib.sleep(5) 

如果您想要require而不是dofile,這樣做:

local barboszalib=require('barboszalib') 

但要確保的Lua可以LUA_PATHpackage.path找到它。