在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1.表的创建及表的介绍--table 是lua的一种数据结构用来帮助我们创建不同的数据类型。如:数组和字典 --如何将函数作为 表 的元素添加进去 1 mm = {} 2 mm.myfc = function () 3 print("数学不好学呀!") 4 end 5 print(mm.myfc()) -- 表其实是哈希表和数组的结合体 -- 数组的下表对应 lua表中的键 数组元素的值对应 是lua表中的值 1 array = {值1,值2,值3,} --这种比较好用 2 array = {[1] = 值1,[2] = 值2,} --容易出错 ,建议最好不要用 -- # 号,作用为获取字符串的长度 。 1 array = {'x','y','z'} 2 print(#array ) --获取array 数组的长度 3 4 -- #号 取得array数组的值 作为for循环的终止值 5 for i = 1,#array ,1 do 6 print(array[i]) 7 end 2.table.insert()函数-- 其用法如下 table.insert(数组,键,值) 1 table.insert(array,2,"aa") 3. table.remove()函数-- 从数组中删除元素 table.remove(数组名,键) 1 bm = {"aa","bb","cc"} 2 table.remove(bm,3) 3 print(#bm) -- 2 4.table.sort()函数-- table.sort(数组,排序规则) 强大的排序函数 1 am = {"b","a","f","c"} 2 arra = function() 3 for i =1,#am do 4 print(i..","..am[i]) 5 end 6 end 7 table.sort(am) 8 arra() 5.创建自己函数的表来作为自己的函数库1 myfunc = {} --创建一个空表 2 myfunc.func = function() 3 print("数学学起来很难") 4 end 5 myfunc.func2 = function() 6 print("语文学起来很容易") 7 end 8 myfunc.func() 9 myfunc.func2() 6.表库--table.concat(表,分隔符,开始下标,结束下标) 1 a = {55,66,88} 2 print(table.concat(a,",",2,3)) --table.insert(表,键,值) 作用:在指定表中插入一个指定的键和值。参数键可以省略,省略默认放入最后一个位置 --table.maxn(表) 作用:返回指定表中多有正数键值中最大键。如果不存在键为正数的键,则返回0 1 --按升序进行排列 2 tab1= {"b", "a", "g", "c"} 3 table.sort(tab1) 4 print (table.concat(tab1,",")) 5 --按降序进行排列 6 tab1= {"b", "a", "g", "c"} 7 sortFunc = function(a,b) return b<a end 8 table.sort(tab1,sortFunc) 9 print (table.concat(tab1,",")) 10 11 --table.foreachi(表,function(i,v)) 12 t1 = {2,4,language = "lua",lua = "aa",10} 13 table.foreachi(t1,print) --对t1表中的整数执行print 操作 --table.foreach(表,function(i,v)) --table.getn(表) 获取表的长度 也可以用 #表 来获取表的长度 1 a ={a ="ac",b = "cd",D = "BD"} 2 print(table.getn(a)) --获得表的长度 --0 3 print(#a) --0 4 --如果为无序的key值,我们用下面的方法,得到表的长度 5 local count = 0 6 for k,v in pairs(a) do 7 count = count + 1 8 end 9 print(count) 10 --获取table中的最大值的例子 11 function maxTable(t) 12 local temp = nil 13 for k,v in pairs(t) do 14 if(temp==nil) then 15 temp = v 16 end 17 if temp<v then 18 temp = v 19 end 20 end 21 return temp 22 end 23 tab = {[1]=55,[2]=66,[3]=25,[26]=100} 24 print("该表的最大值为:",maxTable(tab)) --100 25 print("tab 长度:",#tab) --3 因为 #表 只能获取连续索引的长度 ,所以只能获得索引为1-3的,索引为26的得不到 --注意: 7.例子1 -- 有一个数组包含10个元素,sa = {54,25,66,87,47,89,34,45,63,101}利用循环判断语句将数组内的值从大到小从新排序 2 -- 交换两个变量的值可以写成 a,b = b,a 3 -- 冒泡排序法 (升序排序)从第一个元素开始,对数组中两两相邻的元素比较,将值较小的元素放在最前面,值较大的元素放在后面,一轮比较完毕 4 --一个最大的数沉底成为数组的最后一个元素,一个较小的数如同气泡一样上浮一个位置。n个数,经过n-1轮比较后完成排序 5 --按升序进行排列 6 sa = {54,25,66,87,47,89,34,45,63,101} 7 i = 1 8 j = 1 9 while i<(#sa) do --i<10 10 while j<=((#sa)-i) do --j<=9 11 if sa[j]>sa[j+1] then --如果想从大到小进行排序 sa[j]<sa[j+1] 12 sa[j],sa[j+1] =sa[j+1],sa[j] 13 end 14 j = j+1 15 end 16 j = 1 17 i = i+1 18 end 19 for k,v in pairs(sa) do 20 print(k.."键的值为"..v) 21 end 22 --[[1键的值为25 23 2键的值为34 24 3键的值为45 25 4键的值为47 26 5键的值为54 27 6键的值为63 28 7键的值为66 29 8键的值为87 30 9键的值为89 31 10键的值为101--]] 32 33 --冒泡排序法的另外一种写法 34 function bubble_sort(arr) 35 local tmp = 0 36 for i = 1,#arr-1 do 37 for j = 1,#arr-i do 38 if arr[j]>arr[j+1] then --从小到大排列 arr[j]<arr[j+1] 39 tmp = arr[j] 40 arr[j] = arr[j+1] 41 arr[j+1] = tmp 42 end 43 end 44 end 45 end 46 function main(...) 47 local arr = {54,25,66,45,555,666,321,88,665,89} 48 bubble_sort(arr) 49 for i,v in pairs (arr) do 50 print(i.."键的值是:"..v) 51 end 52 end 53 main() 54 --结果和上面一样 |
请发表评论