有关table.insert的问题
2014-6-9 3:17:29
收藏:0
阅读:109
评论:2
我有一个问题,不理解 Lua 中的 table.insert。 参考 Wrox Beginning Lua Programming 书第129页,
--演示对关联表进行排序的方法。
NameToInstr = {John = “rhythm guitar”,
Paul = “bass guitar”,
George = “lead guitar”,
Ringo = “drumkit”}
--将关联表NameToInstr转移到数组Sorted中:
Sorted = {}
for Name, Instr in pairs(NameToInstr) do
table.insert(Sorted, {Name = Name, Instr = Instr})
end
--比较函数按名称排序:
table.sort(Sorted, function(A, B) return A.Name < B.Name end)
--输出:
for _, NameInstr in ipairs(Sorted) do
print(NameInstr.Name .. “ played “ .. NameInstr.Instr)
end
我的问题是..
- 为什么我们需要进行 Name = Name 和 Instr = Instr 分配?
- 为什么这些分配需要放在这些“表构造函数”中?
- 在“- 比较函数按名称排序:”中,由于 A 和 B 之前没有被分配给任何值,所以这个“function(A,B)”是如何工作的?
万分感谢..(对不起,我的英语很糟糕)
点赞
用户869951
为什么我们需要进行
Name = Name和Instr = Instr的赋值?A: 赋值符号左边的部分是字段名称,右边的是要关联的值。语句
t={a=123, b=var}将t中的字段a关联到值 123,将b的字段与变量var的值关联(除非var本身是一个表,此时b与var所代表的表的引用相关联,但这是不直接相关于您的问题的一个单独问题)。所以在您的情况下,开发人员将键设置为与for循环变量具有相同的名称。为什么这些赋值需要放在那些“表构造函数”中?
A: 不确定您所说的“表构造函数”指的是什么,您在哪里看到它?
在 “ -- The comparison function sorts by Name: ” 中,由于 A 和 B 之前没有被分配任何值,所以“ function(A,B)” 是如何起作用的?
A: 在排序期间,
sort函数将多次调用匿名函数,每次使用两个值 A 和 B,期望返回一个值,指示给定对中 A 是否小于 B。
2014-06-09 04:20:11
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的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中获取用户配置主目录的跨平台方法
table.insert用于类似数组的表格;即,键从 1 到 n 的表格。它会在指定的整数索引处插入一个值,并将其余数组下移。local t = {1, 2, 3} table.insert(t, 2, "foo") -- t = {1, "foo", 2, 3} table.insert(t, "bar") -- t = {1, "foo", 2, 3, "bar"}在您的示例中,该代码正在创建一个表格的数组,其中每个表都有一个
Name和一个Instr字段。table.insert只是将每个数组条目追加到数组的末尾。