Lua table 示例对我不起作用
2021-3-27 19:34:5
收藏:0
阅读:159
评论:1
我正在尝试来自lua.org和我的第4版《Lua编程》实体书的代码,就我所读的来说,所有这些表示例都应该工作,但其中有4个中有3个不起作用,我找不到任何文档可以解释原因。希望能够帮我找出我所缺失的东西。我认为某些规范已经改变了,就像我已经发现table.getn()不再可用一样。我的Linux系统有Lua 5.3.5
local t1={}
t1[1]="Foo"
t1[2]="Bar"
print("Size: "..#t1)
print("Works:"..table.concat(t1,'$$'))
local t2={}
t2[5]="Foo"
t2[40]="Bar"
print("Size: "..#t2)
print("Doesnt Work:"..table.concat(t2,'$$'))
local t3={}
t3["A"]="Foo"
t3["B"]="Bar"
print("Size: "..#t3)
print("Doesnt Work:"..table.concat(t3,'$$'))
local t4={}
t4.A="Foo"
t4.B="Bar"
print("Size: "..#t4)
print("Doesnt Work:"..table.concat(t4,'$$'))
结果
Size: 2
Works:Foo$$Bar
Size: 0
Doesnt Work:
Size: 0
Doesnt Work:
Size: 0
Doesnt Work:
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

请阅读 Lua 参考手册:3.4.7 长度运算符
应用于您的示例:
local t1={} t1[1]="Foo" t1[2]="Bar"t1仅有一个边缘(2),因为t1[2] ~= nil and t1[2+1] == nil。t1只有1个边缘->t1是序列->#t1是t1的长度。local t2={} t2[5]="Foo" t2[40]="Bar"t2有3个边缘(0、5、40),因为border == 0 and t[0+1] == nil,t[5] ~= nil and t[5+1] == nil,t[40]~=nil and t[40+1]==nil。t2有多个边缘->#t2是其任意边缘,而不是其长度。local t3={} t3["A"]="Foo" t3["B"]="Bar"t3有1个边缘(0),因为border == 0 and t3[0+1] == nil,没有更多数字键,因此没有更多的边缘。t3仅有一个边缘->t3是长度为0的序列。local t4={} t4.A="Foo" t4.B="Bar"与
t4等价,因为t.name是t["name"]的语法糖。仅适用于有效的Lua名称!t1是您示例中唯一的序列,因此唯一的t1中#运算符返回元素数的表。如果您不确定是否有序列,则应按如下方式计算元素数:
local n = 0 for _ in pairs(t) do n = n + 1 end这是如何打印表
t的边缘:function printBorders(t) local borders = {} for k in pairs(t) do if type(k) == "number" and t[k] ~= nil and t[k+1] == nil then table.insert(borders, k) end end if t[1] == nil then table.insert(borders, 0) end table.sort(borders) print(table.concat(borders, ", ")) end