table(表):
--初始化表
mytable={}
--指定值
mytable[1]="Lua"
--移除引用
mytable=nil
模块与包——相当于类 :
模块:变量、函数等组成。
--定义名为 module 的模块
module={}
--定义常量
module.constant="这是一个变量"
--定义函数
function module.func1()
io.write("这是一个私有函数!")
end
local function.func2()
print("这是一个私有函数!")
end
function module.func3()
func2()
end
return module
加载模块
require("<模块名>") 或 require "<模块名>"
require("module")
print(module.constant)
module.func3()
local m=require("module")
print(m.constant)
m.func3()
Metatable(元表)
setmetatable()
mytable={} --普通表
mymetatable={} --元表
setmetatable(mytable,mymetatable) --把mymetatable设为mytable的元素
mytable=setmetatable({},{})
__index元方法
__newindex元方法
mymetatable = {}
mytable = setmetatable({key1 = "value1"}, { __newindex = mymetatable })
print(mytable.key1)
mytable.newkey = "新值2"
print(mytable.newkey,mymetatable.newkey)
mytable.key1 = "新值1"
print(mytable.key1,mymetatable.key1)
结果:
value1 nil 新值2 新值1 nil
表的操作符
__add:"+"
__sub:"-"
__mul:"*"
__div:"/"
__mod:'%'
__eq:'=='
__lt:'<'
__le:'<='