新手程序员的lua表

来源:互联网 发布:电脑网络开关设置 编辑:程序博客网 时间:2024/05/18 13:29

第一次写博客大家多多包涵委屈

刚开始学习lua对于 还不是很了解这门语言 但是lua语言有个非常强大的表 熟练运用表就能更加熟练运用lua语言  下面是我在lua表的运用中表的一些理解 参考了多个 大佬的经验自己的一些理解。有错误和不足的地方 请各位指教.生气

Lua中的表:参考:http://www.runoob.com/lua/lua-tables.html

Lua table lua中的一种数据结构 相当于c\c++中的结构体,也相当于map

表: lua_table = {}, 在表中同时也可以套多个表,

如:lua_table[1] = {};  lua_ table[2] = 123;  lua_table[“helloworld”] = “helloworld”

如上 lua中的表的索引可以用任意值,但是值不能为nil,并且 如上所述,表可以直接初始化。

如果我们设置了一个表lua_table = {a = 1 ,b = “hello” } ,同时 让other_table = lua_table,那么我们修改other_table[b] = “world”,那么print(lua_table[a],”,”,lua_table[b] )的输出结果就会为1world.与此同时若吧other_table = nil 那么lua_table 同时也能打印。

这里说明了当表 = 表的时候 不是用的拷贝或复制,更像是一种引用。


这里顺便写一个表的拷贝复制的方法:

function table_copy(main_tab)

if type(main_tab) ~= "table" then

return nil

end

local one_tab = {}

for k,v in pairs(main_tab) do

local v_type = type(v)

if  v_type == "table"  then

one_tab[k] = table_copy(v)

else

one_tab[k] = v

end

end

return one_tab

end

--==表的长度

表的长度:参考自:http://blog.csdn.net/qq_32319583/article/details/53384945

取长度操作符写作一元操作 #。 字符串的长度是它的字节数(就是以一个字符一个字节计算的字符串长度)。

表的长度可以用#来获取:lua_table = {1,2,3};   print(#lua_table);的打印结果为3

然而,对于一些特殊的表 如:lua_table_1 = {1, a = 2, 3,};  那么打印出的表print(#lua_table_1)的结果就为2。首先lua_table_1是一个特殊的表 ,混合了列表(list)和记录(record)两种风格。然后record风格是不做为外表的长度计算的。更像一个函数,跟其他面向对象一样,函数是不记为内部变量的。a的输出值就直接print(lua_table_1.a)就可以了。

注意:在table中不要使用nil,如果不用的元素尽量remove掉,不要置空。

--==表的一些方法

Table的操作常用的方法:

table.concat();concatconcatenate(连锁,连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素,元素间以指定的分隔符(sep)隔开。

concat 可以将 table的数组部分拼接成一个字符串,中间用 seq分隔。

table.insert (table, [pos,] value):

table的数组部分指定位置(pos)插入值为value的一个元素. pos参数可选,默认为数组部分末尾.

table.remove (table [, pos])

返回table数组部分位于pos位置的元素.其后的元素会被前移. pos参数可选,默认为table长度,即从最后一个元素删起。

table.sort (table [, comp])

对给定的table进行升序排序。


以上不足的后期补充


原创粉丝点击