几天来我一直在寻找这个问题的答案我设法以某种方式使用一个技巧来省略这个 Concatenation 部分并使用几个单独的循环将不同的值重新插入同一个表中......但是我的问题是
默认情况下,table.sort 使用 < 来比较数组元素,因此它只能对数字数组或字符串数组进行排序。编写一个比较函数,允许 table.sort 对混合类型的数组进行排序。在排序后的数组中,给定类型的所有值都应该组合在一起。在每个这样的组中,数字和字符串应该像往常一样排序,而其他类型应该以某种任意但一致的方式排序。
A = { {} , {} , {} , "" , "a", "b" , "c" , 1 , 2 , 3 , -100 , 1.1 , function() end , function() end , false , false , true }
正如我所说,我使用不同的 for 循环解决了这个问题,但是有没有办法只分析表的每个元素,然后将其分配给不同的表???比如:“Tables,Funcs,Nums,Strings,...”然后在分析完成后将它们连接在一起以在排序版本中拥有相同的表。
我对此的低效回答是:
function Sep(val)
local NewA = {}
for i in pairs(val) do
if type(val[i]) == "string" then
table.insert(NewA,val[i])
end
end
for i in pairs(val) do
if type(val[i]) == "number" then
table.insert(NewA,val[i])
end
end
for i in pairs(val) do
if type(val[i]) == "function" then
table.insert(NewA,tostring(val[i]))
end
end
for i in pairs(val) do
if type(val[i]) == "table" then
table.insert(NewA,tostring(val[i]))
end
end
for i in pairs(val) do
if type(val[i]) == "boolean" then
table.insert(NewA,tostring(val[i]))
end
end
for i in pairs(NewA) do
print(NewA[i])
end
end