如何将 table 传递给没有第一个元素的函数?
How to pass table to a function without first element?
我正在尝试创建一个函数,该函数接收 table 个字符串并根据其第一个元素将 table 解析为其他函数。
我的代码:
fruits = {}
function addToFruits(t)
print(#t)
end
function parseTable(t)
if t[1] == "fruits" then
addToFruits(table.remove(t, 1)) --pass only {"apple", "banana"}
end
end
parseTable({"fruits", "apple", "banana"})
我得到的结果:
6
我期望的结果:
2
如何正确解析没有第一个元素的 table?
table.remove
中的 return 值是删除的元素 ("fruits" )
该对象是一个字符串,长度为 6,解释了您的代码得到的答案。
如果你想要正确答案 2,那么下面的代码就可以做到。
fruits = {}
function addToFruits(t)
print(#t)
end
function parseTable(t)
if t[1] == "fruits" then
table.remove(t, 1)
addToFruits( t ) --pass only {"apple", "banana"}
end
end
parseTable({"fruits", "apple", "banana"})
显然这会损坏原始 table,并且根据用途,可能需要 table 副本 - 有很多关于它的文章。
我会优先使用诸如...的结构
message = { type = "fruits", data = { "apple", "banana" } }
允许将数据与消息类型分开。
新代码看起来像....
fruits = {}
function addToFruits(t)
print(#t)
end
function parseTable(t)
if t.type == "fruits" then
addToFruits( t.data ) --pass only {"apple", "banana"}
end
end
message = { type = "fruits", data = { "apple", "banana" } }
parseTable( message )
table.remove 函数从数组中的给定位置删除(和 returns)一个元素。 ref
function parseTable(t)
if t[1] == "fruits" then
local removed = table.remove(t, 1)
print(removed) -- fruits
addToFruits(t) -- fruits removed and will pass {"apple", "banana"}
end
end
答案 6 是 "fruits" 的长度,table.remove(t, 1)
将 return
我正在尝试创建一个函数,该函数接收 table 个字符串并根据其第一个元素将 table 解析为其他函数。
我的代码:
fruits = {}
function addToFruits(t)
print(#t)
end
function parseTable(t)
if t[1] == "fruits" then
addToFruits(table.remove(t, 1)) --pass only {"apple", "banana"}
end
end
parseTable({"fruits", "apple", "banana"})
我得到的结果:
6
我期望的结果:
2
如何正确解析没有第一个元素的 table?
table.remove
中的 return 值是删除的元素 ("fruits" )
该对象是一个字符串,长度为 6,解释了您的代码得到的答案。
如果你想要正确答案 2,那么下面的代码就可以做到。
fruits = {}
function addToFruits(t)
print(#t)
end
function parseTable(t)
if t[1] == "fruits" then
table.remove(t, 1)
addToFruits( t ) --pass only {"apple", "banana"}
end
end
parseTable({"fruits", "apple", "banana"})
显然这会损坏原始 table,并且根据用途,可能需要 table 副本 - 有很多关于它的文章。
我会优先使用诸如...的结构
message = { type = "fruits", data = { "apple", "banana" } }
允许将数据与消息类型分开。
新代码看起来像....
fruits = {}
function addToFruits(t)
print(#t)
end
function parseTable(t)
if t.type == "fruits" then
addToFruits( t.data ) --pass only {"apple", "banana"}
end
end
message = { type = "fruits", data = { "apple", "banana" } }
parseTable( message )
table.remove 函数从数组中的给定位置删除(和 returns)一个元素。 ref
function parseTable(t)
if t[1] == "fruits" then
local removed = table.remove(t, 1)
print(removed) -- fruits
addToFruits(t) -- fruits removed and will pass {"apple", "banana"}
end
end
答案 6 是 "fruits" 的长度,table.remove(t, 1)
将 return