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

哈尔滨seo优化服务商杭州seo网站推广

哈尔滨seo优化服务商,杭州seo网站推广,郑州做网站的公司,企业网站建设新闻发布文章目录 Table的一万种用法二维数组类和结构体Table操作insert & removesortconcat 接上文【Lua学习笔记】Lua进阶——Table,迭代器 Table的一万种用法 二维数组 a {{ 1, 2, 3 },{ 4, 5, 6 }, } print(#a) -->2 for i1,#a dob a[i]for j1,#b doprint(b[…

在这里插入图片描述

文章目录

  • Table的一万种用法
    • 二维数组
    • 类和结构体
    • Table操作
      • insert & remove
      • sort
      • concat

接上文【Lua学习笔记】Lua进阶——Table,迭代器


Table的一万种用法

二维数组

a = {{ 1, 2, 3 },{ 4, 5, 6 },
}
print(#a) -->2
for i=1,#a dob = a[i]for j=1,#b doprint(b[j])end
end
应该不用解释吧?

类和结构体

Lua是面向过程的,所以想要实现面向对象只能在形式上模拟。
那么面向对象要实现什么?继承封装多态,这些暂且不谈,首先一个类模块应当需要成员变量和成员方法。

car = {color = "red",size = "big",StartEngine = function()print("汽车,启动!")end,
}
car.StartEngine();
--在table外声明方法
car.StopEngine = function()print("停车")
end
car.StopEngine();
--另一种声明方式
function car.Speaker()print("嘟嘟嘟")
end
car.Speaker()
输出:
汽车,启动!
停车
嘟嘟嘟

上述代码确实看起来很像类,但是应当记住它是个table,别真的把它当作面向对象了,例如下面:

car = {color = "red",size = "big",StartEngine = function()print(color)end,
}
car.StartEngine();
输出
nilcar = {color = "red",size = "big",StartEngine = function()print(car.color)end,
}
car.StartEngine();
输出
red

很简单,如果直接print(color),那么color则是我们新定义的一个全局变量,它没有赋值自然是nil。
而想要打出red,就需要print(car.color),因为我们要打印的不是color,而是car这个table中的一个元素!

car = {color = "red",size = "big",StartEngine = function()print(self.color)end,PrintColor = function (t)print(t.color)end
}
car.PrintColor(car);
car:PrintColor();
输出:
red
red

lua提供了一个语法糖,当我们用冒号调用方法时,会把调用者作为第一个参数传入方法中

function car:PrintSize()  --相当于function car.PrintSize(car)print(self.size)
end
car.PrintSize(car);
car:PrintSize()
car:PrintSize(car)
输出:
big
big
big

冒号主要就是为了在函数调用时使用self关键字,self不同与this,它代表的应当是这个冒号传入的参数。除了提供便利性之外,冒号还会为我们节省一条指令。有种脱裤子放屁的美。


Table操作

insert & remove

t1 = {{ age = 1, name = "a" },{ age = 2, name = "b" },
}
t2 = { age = 3, name = "c" } --注意t2是一维的for i = 1, #t1 dob = t1[i]print(b)
end
print("插入后")
table.insert(t1,t2)
for i = 1, #t1 dob = t1[i]print(b)
end
print(t1[1].name)
print(t1[2].name)
print(t1[3].name)table: 00A2A580
table: 00A2A4B8
插入后
table: 00A2A580
table: 00A2A4B8
table: 00A2A5D0
a
b
c

执行insert后,我们观察地址不难发现,新数据被插入到尾部了,同样的,执行table.remove方法也会移除最后一个索引的元素。

table.insert(t1,2,t2)
for i = 1, #t1 dob = t1[i]print(b)
end
print(t1[1].name)
print(t1[2].name)
print(t1[3].name)a
c
btable.remove(t1,2,t2)
for i = 1, #t1 dob = t1[i]print(b)
end
print(t1[1].name)
print(t1[2].name)
print(t1[3].name) --报错
a
b

lua也提供了带position值的insert和remove,insert会直接插入到pos位置并将其后的元素都后移一个单位,而remove则会删除对应位置,并将其后元素都前移一个单位

sort

table.sort排序用法

t = { 2, 5, 5, 3, 6 }
table.sort(t)
for index, value in ipairs(t) doprint(value)
end
print("--------")
table.sort(t, function(a, b)if a>b thenreturn trueend
end)
for index, value in ipairs(t) doprint(value)
end输出:
2
3
5
5
6
--------
6
5
5
3
2

知道升序和降序用法即可,默认升序,使用a>b reutrn true可以修改为降序猜想排序function与冒泡排序有关

concat

t = { 5, 5, 2, 3, 6 }
str = table.concat(t,",")
print(str)5,5,2,3,6str = table.concat(t,",",2,5)
print(str)5,2,3,6

使用table.concat方法,其返回值是字符串,所以我们拼接时只能用number和string类型的,此外别忘了需要把返回值赋值来接收最后处理的结果

http://www.hengruixuexiao.com/news/57111.html

相关文章:

  • 做区块链网站的公司企业产品推广策划方案
  • 台州网站建设找哪家好点外贸网站建站和推广
  • 想给公司做个网站 怎么做服务器租用
  • 洛阳网站建设 培训站长网站优化公司
  • 有关做服装的网站吗郑州网站
  • 网站开发如何下载服务器文档竞价是什么意思
  • 20亿做网站谷歌浏览器下载手机版官网
  • 移动端优秀网站免费的推广引流软件
  • 网站的图片滚动怎么做的网络优化工程师简历
  • 滨州 网站开发搜索引擎优化是做什么的
  • 北京网站制作公司公众号怎么推广
  • asp做的网站后台怎么进去seo优化工具大全
  • 做美陈网站住房和城乡建设部
  • 北京做网站开发的公司站长素材免费下载
  • 高明网站设计永久免费自助建站软件
  • asp网站伪静态教程进入百度首页官网
  • 韩雪冬网站如何获取热搜关键词
  • 品质商城网站建设数字经济发展情况报告
  • 建设银行梅李分行网站网络营销的主要手段和策略
  • wordpress显示icp备案号网站seo排名优化工具
  • 免费查企业信息的软件seo关键词优化推荐
  • 网站建设的总体设计思想此网站服务器不在国内维护
  • 潍坊网站建设优化排名seo整站优化系统
  • 建设电子商务网站目的石家庄头条今日头条新闻
  • 如何自己做网站腾讯天眼查询个人
  • 北京都有那些做网站的公司线上营销怎么做
  • 网站建设竞价托管外包百度关键词优化系统
  • windows.net做网站太原竞价托管公司推荐
  • 店标logo设计长沙专业竞价优化首选
  • 网络营销4cseo网站内容优化有哪些