题
我不知道如何处理nils
我的排序函数得到。
当我在它有这样的检查,table.sort
一些来电之后崩溃。
if a == nil then
return false
elseif b == nil then
return true
end
使用此错误:的无效次函数用于分选即可。但根据该文件,排序函数应该返回false,如果B之后去。真否则。
如果我删除删除代码,这当然崩溃索引尼尔斯的。
解决方案
这具有很少或没有做与在表nil
值。如果比较功能本身是无效时,将生成错误消息。从用于文档 table.sort
:
如果
comp
给出,那么它必须是一个 该接收两个表函数 元素,并返回true时 第一是小于第二(使得not comp(a[i+1],a[i])
为真 排序后)。
换句话说,comp(a,b)
必须隐含not comp(b,a)
。如果这种关系不成立,那么错误“排序顺序无效功能”将有可能提高。 (注意,这可能不是在所有情况下被升高。)
为了更加有用,我们真的需要看到传递给table.sort
整体功能。
其他提示
要把所有零值在阵列的开头:
function mycomp(a,b)
if a == nil and b == nil then
return false
end
if a == nil then
return true
end
if b == nil then
return false
end
return a < b
end
要把所有零值在阵列的末尾:
function mycomp(a,b)
if a == nil and b == nil then
return false
end
if a == nil then
return false
end
if b == nil then
return true
end
return a < b
end
不隶属于 StackOverflow