在my_module.lua中程式為:
local myMod = {}
function myMod.add(a, b)
return (a+b)
end
function myMod.dot(a, b)
return (a*b)
end
return myMod
在主程式中則可以這樣引用
local myMod = require("my_module")
print(myMod.add(10, 20))
print(myMod.dot(3, 5))
print(myMod.add(2, myMod.dot(3, 4)))
require()用來把需要的library引入
若想要寫成像物件那樣好像也可以使用module的方式處理…現在還沒讀到,晚點再介紹這部份
另外,還可以幫模組(或是說變數)動態增加function
local myMod = require("my_module")
function myMod.print(a, b)
print("value=", a, b)
end
function myMod:print2(a, b, c)
print("value2=", a, b, c)
end
print(myMod.add(10, 20))
print(myMod.dot(3, 5))
print(myMod.add(2, myMod.dot(3, 4)))
myMod.print(11, 22)
myMod.print2(111, 222, 333, 444)
--[[結果為
30
15
14
value= 11 22
value2= 222 333 444
]]
這邊還不是很懂「.」和「:」的差異…
由網路查來的說法是
function myMod:print2(a, b, c)
等同於 function myMod.print(self, a, b, c)
多了一個把自己當成引數
因此把第二個function改為
function myMod:print2(a, b, c)
print("value2=", a, b, c)
print('type=', self)
end
myMod.print(111, 222, 333, 444)
則會印出
value2= 222 333 444
type= 111