第十三章 元表与元方法 Lua程序设计笔记

Posted LeoSirius

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十三章 元表与元方法 Lua程序设计笔记相关的知识,希望对你有一定的参考价值。

--第十三章 元表与元方法
Lua中每个值都有一个表。table和userdata可以有各自独立的元表,其他类型的值共享一个元表。
Lua中只能设置table的元表。若要设置其他类型的值的元表,则必须通过C代码来完成。

--13.1算数类型的元方法

Set = {}
local mt = {} --创建元表

function Set.new(l)--根据参数列表中的值创建一个新的集合
local set = {}
setmetatable(set, mt) --设置元表
for _,v in ipairs(l) do set[v] = true end
return set
end

function Set.union(a, b)
local res = Set.new{}
for k in pairs(a) do res[k] = true end
for k in pairs(b) do res[k] = true end
return res
end

function Set.intersection(a, b)
local res = Set.new{}
for k in pairs(a) do 
res[k] = b[k]
end
return res
end

function Set.tostring(set) --这两个方法打印内容
local l = {}
for e in pairs(set) do
l[#l+1] = e
end
return "{"..table.concat(l,", ").."}"
end

function Set.print(s)
print(Set.tostring(s))
end


s1 = Set.new{10,20,30,50}
s2 = Set.new{30,1}

mt.__add = Set.union
mt.__mul = Set.intersection

s3 = s1 + s2
Set.print(s3)
Set.print((s1+s2)*s1)

除了__add、__mul外,还有__sub、__div等

 

(暂时记录到这里,先去学C++了)

以上是关于第十三章 元表与元方法 Lua程序设计笔记的主要内容,如果未能解决你的问题,请参考以下文章

Lua中的元表与元方法

Lua中的元表与元方法

Lua中的元表与元方法

《On Java 8》中文版 第十三章 函数式编程

Lua教程

Java编程思想第四版读书笔记——第十三章 字符串