模块:
> mym=require "io"
> mym.write("hello\n")
hello
> 元表与元方法
可能通过元表定义值的行为,比如可以定义多个table运算法则,类似于C语言的运算符重载
dp@dp:~ % lua test6.lua
10,20
false
True
Lua6.lua:
dp@dp:~ % cat test6.lua
List={}
local mymt={}
function List.new(l)
local mylist={}
setmetatable(mylist,mymt)
for k,v in ipairs(l) do
mylist[k]=l[k]
end
return mylist
end
function List.add(a,b)
local result=List.new{}
for k in pairs(a) do
result[k]=a[k]+b[k]
end
end
function List.sub(a,b)
local result=List.new{}
for k in pairs(a) do
result[k]=a[k]-b[k]
end
end
function List.tostring(a)
local lt={}
for k in pairs(a) do
lt[k]=a[k]
end
return table.concat(lt,",")
end
function List.print(a)
print(List.tostring(a))
end
function List.le(a,b)
for k in pairs(a) do
if a[k]~=b[k] then
return false
end
end
return true
end
mymt.__add=List.add
mymt.__sub=List.sub
mymt.__eq=List.le
a=List.new{10,20}
b=List.new{11,22}
d=List.new{11,22}
c=a+b
List.print(a)
print(a==b)
print(b==d)
dp@dp:~ %
原文:http://blog.csdn.net/myhaspl/article/details/19821693