Lua键名或自动索引?
2014-10-12 15:31:19
收藏:0
阅读:104
评论:2
假设有以下两张表格:
foo = {
"aaa",
"bbb",
"ccc"
}
bar = {
first = "aaa",
second = "bbb",
third = "ccc"
}
表格 foo 没有分配键,而 bar 有键。
当我循环遍历表格 bar 时,我会得到分配的键名,由于它是一个字符串,因此很容易知道这些键是在 Lua 脚本中定义的。
但是当我迭代 foo 时,我当然会得到一个整数作为键,从 1 开始。我如何看到(或者是否可行),这是一个“自动索引”键,而不是在表格中定义的?
我使用 lua_next() 和 lua_type() 从 C 中遍历表格。
我需要把表格写回(作为 Lua 脚本)以确保其结构完全相同,这意味着如果一开始没有键(如 foo),我就不应该编写数字“自动索引”,只需编写值。
编辑
也许并不是那么清楚。简短的版本是:
是否有可能区分用户/程序员设置的数字索引 和 Lua 引擎自动分配的一个?
点赞
用户1009479
在每个表中都有键的值,你的示例中的两个表只是表构造函数的两种语法糖。
foo = {
"aaa",
"bbb",
"ccc"
}
只是语法糖:
foo = {
[1] = "aaa",
[2] = "bbb",
[3] = "ccc"
}
和
bar = {
first = "aaa",
second = "bbb",
third = "ccc"
}
是语法糖:
bar = {
["first"] = "aaa",
["second"] = "bbb",
["third"] = "ccc"
}
这两种风格甚至可以混合使用,例如:
foobar = {
"aaa",
first = "aaa",
"bbb",
second = "bbb",
"ccc",
third = "ccc"
}
再次强调,每个值都有一个键,对于 foo,键是整数 1,对于 bar,键是字符串。
2014-10-12 13:00:09
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的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 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
第一个
foo等价于foo = { 1 = "aaa", 2 = "bbb", 3 = "ccc" }[不,它不是有效的 Lua,但这正是我要的原则。]
在这种情况下,索引 是 键。