array = {}
array.mt = {}
function array.new(t)
local data = {}
for k,v in ipairs(t) do
data[v] = true
end
setmetatable(data,array.mt)
return data
end
array.mt.__le = function(a,b) --<=
for k in pairs(a) do --a是b的子集
if not b[k] then return false end
end
return true
end
array.mt.__lt = function(a,b) --<
return a<=b and not (b<=a)
end
array.mt.__eq = function(a,b) --==
return a<=b and b<=a
end
a1 = array.new{"hello","world"}
a2 = array.new{"love","hello","tttt"}
a3 = array.new{"tttt","love","hello"}
print(a1 >= a2) --false
print(a2 <= a3) --true
print(a2 == a3) --true
print(a2 < a3) --false
print(a1 < a2) --false关系类的元方法的两个操作元素table需要有一致的元表