如何去掉第一个元素将表格传递给函数?
2018-9-19 6:11:0
收藏:0
阅读:133
评论:2
我尝试创建一个函数,接收一张字符串表格并根据第一个元素将表格解析给其他函数。
我的代码:
fruits = {}
function addToFruits(t)
print(#t)
end
function parseTable(t)
if t[1] == "fruits" then
addToFruits(table.remove(t, 1)) --只传递 {"apple", "banana"}
end
end
parseTable({"fruits", "apple", "banana"})
我得到的结果:
6
我期望的结果:
2
如何正确解析表格而不包含第一个元素?
点赞
用户5525442
table.remove 函数用于从数组的给定位置删除(并返回)一个元素。参考
function parseTable(t)
if t[1] == "fruits" then
local removed = table.remove(t, 1)
print(removed) -- fruits
addToFruits(t) -- 水果已被删除,传递 {"apple", "banana"}
end
end
答案 6 是 "fruits" 的长度,table.remove(t, 1) 将返回该长度。
2018-09-19 07:24:12
评论区的留言会收到邮件通知哦~
推荐文章
- 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 代码?

table.remove的返回值是被移除的元素("fruits")。这个对象是一个字符串,长度为 6,解释了你的代码得到的答案。
如果你想要正确的答案 2,那么下面的代码可以达到目的。
fruits = {} function addToFruits(t) print(#t) end function parseTable(t) if t[1] == "fruits" then table.remove(t, 1) addToFruits( t ) -- 仅传入 {"apple", "banana"} end end parseTable({"fruits", "apple", "banana"})显然这会破坏原始的表格,并且根据用途,可能需要表格的副本 - 有各种关于这方面的文章。
我更喜欢使用这样的结构...
message = { type = "fruits", data = { "apple", "banana" } }让数据与消息类型分离。
新代码看起来是这样的...
fruits = {} function addToFruits(t) print(#t) end function parseTable(t) if t.type == "fruits" then addToFruits( t.data ) -- 仅传入 {"apple", "banana"} end end message = { type = "fruits", data = { "apple", "banana" } } parseTable( message )