20.1
--f201
local function intersact(a,b)
for k,c in pairs(b) do
a[k] = nil
end
return a
end
local function toS(set)
local l = {}
for _ in pairs(set) do
l[#l+1] = tostring(_)
end
return "{"..table.concat(l,", ").."}"
end
ms = {}
ms.__sub = intersact
local function Table_New(l)
local t = {}
for k,c in ipairs(l) do
t[c] = true
end
setmetatable(t,ms)
return t
end
20.2
--f202
local function len(set)
return #set
end
ms.__len = len
20.3
local mt = {
__index = function(_,k)
return _[k]
end,
__newindex = function()
error("大哥,这是个只读的表啊",2)
end
}
function readonly(_)
setmetatable(_,mt)
return _
end
t = readonly({1,2,3})
t2 = readonly({"i","c","e"})
print(t[1])
print(t2[2])
t[4] = "ice"
20.4 20.5 恶心的一批
function fileAsArray(filename)
io.input(filename)
local text = io.read("a")
-- str to table
local t = {}
local cnt = 1
for v in string.gmatch(text,"(.)") do
t[cnt] = v
cnt = cnt+1
end
local proxy = {}
local mt =
{
__index = function(_,k)
return t[k]
end,
__newindex = function(_,k,v)
t[k] = v
end,
__len = function()
return #t
end,
__pairs = function()
return function(_,k)
local nextkey,nextvalue = next(t,k)
return nextkey,nextvalue
end
end
}
setmetatable(proxy,mt)
return proxy
end
local proxy = fileAsArray("ingoreWords")
print(proxy[1])
proxy[1] = "h"
print(proxy[1])
print(#proxy)
for k,v in pairs(proxy) do
print(v)
end