我正在尝试重写自己的(Rec - 159,Rec - 160).split(",")
函数,该函数返回不包含tablePack()
的表。
例如,调用n
应该返回一个表tablePack(1, 2, 3)
。
如何创建{1, 2, 3}
函数?任何建议将不胜感激。
添加:
这是示例代码:
tablePack()
结果:
local a = table.pack(1,2,3)
local b = {1,2,3}
print(a.n, b.n)
我如何创建自己的3 nil
函数,以便得到以下结果?
tablePack()
ADDED2:
这是解决方案吗?
nil nil
也许这更好?
function tablePack(...)
local r = table.pack(...)
r.n = nil
return r;
end
答案 0 :(得分:2)
您的ofTable
解决方案是最好的。
table.pack
时, nil
很有用。 n
字段可让您检测nil
中包含的尾随...
,或处理#
,ipairs
和大多数{{1 }}功能不起作用。
答案 1 :(得分:0)
请忽略我以前的答案。
您将n设置为nil的示例完全可以接受,并且可以正常工作。
(错误代码,请忽略:)
您可以简单地返回省略号:
function tablePack(...)
return ...;
end
还有这个:
function tablePack(...)
local n = select("#", ...);
local t = debug.getinfo(0);
for k in pairs(t) do
t[k] = nil;
end
for i = 1, n do
local e = select(i, ...);
table.insert(t, e);
end
return t;
end
local t = tablePack(1,2,3);
print("length: " .. #t);
for e in pairs(t) do
print(e);
end