当前位置: 首页 > news >正文

家庭电脑可以做网站吗淘宝宝贝排名查询

家庭电脑可以做网站吗,淘宝宝贝排名查询,小学生一分钟新闻播报,常州做网站优化示例代码 《programming in lua》里有一个案例很详细,就是写一个集合类的table,其负责筛选出table中不重复的元素并组合成一个新的table。本人按照自己的方式默写了一次,结果发现大差不差,代码如下: Set {} --集合--…

示例代码

 《programming in lua》里有一个案例很详细,就是写一个集合类的table,其负责筛选出table中不重复的元素并组合成一个新的table。本人按照自己的方式默写了一次,结果发现大差不差,代码如下:

Set = {} --集合--创建一个新集合
function Set.new(t)local set = {}for k,v in ipairs(t) doset[v] = trueendreturn set
end--集合并运算
function Set.union(a,b)local res = Set.new({})for k,v in pairs(a) dores[k] = trueendfor k,v in pairs(b) dores[k] = trueendreturn res
end--集合交运算
function Set.intersection(a,b)local res = Set.new({})for k,v in pairs(a) doif b[k] thenres[k] = trueendendreturn res
end--集合转成字符串
function Set.tostring(set)local res = "{"local temp = ""for k,v in pairs(set) dores=res..temp..ktemp = ","endres=res.."}"return res
endlocal set = Set.new({1,3,4,5,6,3,4,5})
local set2 = Set.new({3,5,7})
local intersectSet = Set.intersection(set,set2)
local unionSet = Set.union(set,set2)
print(Set.tostring(intersectSet)) --{3,5}
print(Set.tostring(unionSet)) --{1,3,4,5,6,7}

算术运算metamethod

将上面每个函数都改写成metamethod的形式,相当于是运算符直接重载,而非显式调用函数名,可以达到同样的目的。赋值加法运算和乘法运算如下:

setmetatable(Set,{__add = Set.union,__mul = Set.intersection,
})--创建一个新集合
function Set.new(t)local set = {}setmetatable(set,getmetatable(Set))for k,v in ipairs(t) doset[v] = trueendreturn set
end

关系运算metamethod

常见的关系运算即等于、小于、大于、大于等于、小于等于,只需要等于、小于、小于等于中的其中两个关系,即可推算出其他所有关系。如果是a大于b则是b小于等于a的运算;如果是a大于等于b则是b小于a的运算。在lua中给了三个关系运算metamethods:__eq(等于),__lt(小于),和__le(小于 等于)给关系运算符赋予特殊的含义。

于是为上面集合覆写关系运算:

--小于等于
__le = function(a,b)for k,v in pairs(a) doif not b[k] thenreturn falseendendreturn true
end,
--等于
__eq = function(a,b)return a <= b and b <= a
end,
--小于
__lt = function(a,b)return a <= b and a ~= b
end

测试代码如下:

local a = Set.new({1,3,4,5,6})
local b = Set.new({3,5})
print(a==b)--false
print(a<=b)--false
print(a>=b)--true
print(a<b)--false
print(a>b)--true

tostring

类似tostring函数也是有相应的metamethod供我们选择的,比如上方的tostring函数,可以设置metatable的元方法__tostring,这样的话就直接print(set)即可了:

setmetatable(Set,{__add = Set.union,__mul = Set.intersection,__tostring = Set.tostring
})
print(intersectSet) --{3,5}
print(unionSet) --{1,3,4,5,6,7}
http://www.yayakq.cn/news/125982/

相关文章:

  • 公司部门网站设计模板seo关键词的优化技巧
  • 网站建设成本计划泰安做网站的
  • 别具光芒 Flash互动网站设计哪里有竞价推广托管
  • 大淘客做网站视频没网站怎么做京东联盟
  • 1.网站开发的详细流程电子商务网站安全性能主要包括
  • 网站建设合同属于印花税的哪个税目中国发达国家还有多远
  • 网站建设目的与意义在线公司取名
  • 专注做农产品的网站怎样备份wordpress
  • 二手交易网站开发推广引流系统
  • 淮南装饰公司网站建设建模教程
  • 网站设计的目标是什么兰州建设网站
  • 有没有做美食的网站网站大图做多大尺寸
  • 食品类建设网站的目的wordpress更新删除
  • 网站制作公司业务发展方案当下最流行的营销方式
  • 高端网站开发建设网站推广网站策划
  • 购物平台软件开发seo关键词布局技巧
  • 公司做网站开票是什么项目微信app开发需要多少钱
  • 静安手机网站建设全国最缺工的100个职业排行
  • 辽宁省住房和城乡建设厅网站网页制作公司哪家比较好
  • 平面图怎么画南京seo招聘
  • 重庆北碚网站建设服务器两个域名一个ip做两个网站
  • 潍坊网页网站制作小程序推广
  • 个人网站免费做哈巴狗模式网站开发
  • 电子商务网站开发常用工具怎么把网站开发成crx
  • 江门网站制作建设达濠网红小吃
  • 深圳网站设计优刻网站建设中最重要的环节
  • 宁波微网站开发导航网站头部代码
  • 南宁建设网站培训石家庄在哪个省
  • hk域名哪里注册手机网站建设优化软件
  • 网站站长指南做ppt做好的网站