• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Lua数组与表

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Lua表
table是 Lua中的一种数据结构, 既可以当做数组(array)使用, 又可以当做字典(类似 Java中的HashMap)来使用

在 Lua的8中数据结构中,
· 可以作为 table键的有: number, string, boolean, function, table, thread.
· 不能作为 table键的有: nil.
· userdata未知

表的构造
第一种方式:

-- 使用花括号来创建一个空表, 然后赋值
mytab = {}
mytab['x'] = 12
mytab[2] = 'hello'

第二种方式:

-- 创建表的时候, 同时初始化表数据
-- 表中存储键值对数据, 格式如: [key] = value, 键和值可以是多种类型
mytab = {
['x'] = 12,
[2] = 'hello'
}

第三种方式

-- 同第二种方式, 不过非数字类型的键可以省略中括号, 数字类型不能省略
mytab = {
x = 12,
[2] = 'hello'
}

第四种方式

-- 想使用数字索引作为键时, 可以通过仅写值的方式声明,
-- 这样 Lua会按照声明顺序为值建立从1开始的自增的索引
-- 如果表中都是数字索引, 那么此时的表就是一个数组
mytab = {
1, 2, 3
}

表的遍历
第一种方式

-- 先构造一个表
mytab = {
11, 12, 13,
a = 'A',
b = 'B',
c = 'C'
}

-- 以下是最常用的两种遍历方式
-- 全表遍历
-- 这种遍历方式是按照 table中 key的 hash值排列顺序来遍历的,
-- 并非是 table中 key的定义顺序, 并且不关心 key是否从1开始和 key是否以1递增
for k, v in pairs(tab) do
print(k, v)
end

-- [[
output:
1 11
2 12
3 13
c C
b B
a A
]]

-- 仅遍历表中的数组部分

-- 按照 key的大小顺序来遍历 (注意不是 key定义的顺序)
-- 因为表中非数字键的键值对是使用 hash表存储的, 这样的数据是无序的, 所以无法遍历
for k, v in ipairs(mytab) do
print(k, v)
end

--[[
output:
1 11
2 12
3 13
]]

 

-- 第三种方式
-- #mytab可以获取到 mytab表中的数组部分的元素个数
for i = 1, #mytab do
print(mytab[i])
end

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
lua-携程发布时间:2022-07-22
下一篇:
Lua与C/C++交互——C/C++调用Lua脚本发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap