Sorting Lua排序。排序后的奇怪顺序 crdsClear={{{y=56,x=50,symbolName=3,}, {y=56,x=29,symbolName=2,}, {y=56,x=99,symbolName=2,}, {y=56,x=9,symbolName=5,}, {y=56,x=69,symbolName=5,}, {y=56,x=19,symbolName=4,}, {y=56,x=59,symbolName=4,}, {y=56,x=89,symbolName=4,}, {y=56,x=40,symbolName=7,}, {y=56,x=80,symbolName=6,},} tmp2={} ywf=1 表.排序(crdsClear, 功能(a、b) tmp2[ywf]=“” 对于i=1,#crdsClear,1执行tmp2[ywf]=tmp2[ywf].“\t”。.crdsClear[i].x结束 ywf=ywf+1 如果a.x
来自Lua参考手册: 如果给定了comp,那么它必须是一个接收两个列表的函数 元素,并在第一个元素必须位于 最后一个顺序中的第二个(因此,在排序之后,iSorting Lua排序。排序后的奇怪顺序 crdsClear={{{y=56,x=50,symbolName=3,}, {y=56,x=29,symbolName=2,}, {y=56,x=99,symbolName=2,}, {y=56,x=9,symbolName=5,}, {y=56,x=69,symbolName=5,}, {y=56,x=19,symbolName=4,}, {y=56,x=59,symbolName=4,}, {y=56,x=89,symbolName=4,}, {y=56,x=40,symbolName=7,}, {y=56,x=80,symbolName=6,},} tmp2={} ywf=1 表.排序(crdsClear, 功能(a、b) tmp2[ywf]=“” 对于i=1,#crdsClear,1执行tmp2[ywf]=tmp2[ywf].“\t”。.crdsClear[i].x结束 ywf=ywf+1 如果a.x,sorting,lua,Sorting,Lua,来自Lua参考手册: 如果给定了comp,那么它必须是一个接收两个列表的函数 元素,并在第一个元素必须位于 最后一个顺序中的第二个(因此,在排序之后,ib.x)有一些问题。@DarkMaster当然。你期望什么?它与a.x相同 crdsClear={{y=56,x=50,symbolName=3,}, {y=56,x=29,symbolName=2,}, {y=56,x=99,symbolName=2,}, {y=56,x=9,symbolName=5,}, {y=56,x=69,symbolN
使用Lua参考手册中的
:
如果给定了comp,那么它必须是一个接收两个列表的函数
元素,并在第一个元素必须位于
最后一个顺序中的第二个(因此,在排序之后,i
使用有什么区别?如何得到true或false?排序函数不知道如何比较值。@DarkMaster yes函数不知道如何比较值。但它要求您在排序时比较值的方式不会导致问题。请尝试在比较函数中打印值对,看看结果如何在排序结束之前。我在创建主题之前做了,我感到震惊…它比较元素3和7,在比较之后交换7和5。如何?Idk…返回not(a.x>b.x)有一些问题。@DarkMaster当然有。你期望什么?它与a.x一样有什么区别?我如何得到true或false?排序函数不知道我如何比较值。@DarkMaster是的,函数不知道你如何比较值。但它要求你在排序时以一种不会导致问题的方式比较值。尝试打印比较函数中的值对,看看排序结束前会发生什么。我在创建主题之前做了这项工作,我感到震惊…它比较元素3和7,然后交换7和5。如何?Idk…不返回(a.x>b.x)有一些问题。@DarkMaster当然。你期望什么?它与a.x相同
crdsClear={{y=56,x=50,symbolName=3,},
{y=56,x=29,symbolName=2,},
{y=56,x=99,symbolName=2,},
{y=56,x=9,symbolName=5,},
{y=56,x=69,symbolName=5,},
{y=56,x=19,symbolName=4,},
{y=56,x=59,symbolName=4,},
{y=56,x=89,symbolName=4,},
{y=56,x=40,symbolName=7,},
{y=56,x=80,symbolName=6,},}
tmp2={}
ywf = 1
table.sort(crdsClear,
function(a,b)
tmp2[ywf]=""
for i=1, #crdsClear, 1 do tmp2[ywf] = tmp2[ywf].."\t"..crdsClear[i].x end
ywf = ywf + 1
if a.x <= b.x then print(a.x.." <= "..b.x.." true") else print(a.x.." <= "..b.x.." false") end
return a.x <= b.x -- a.y <= b.y and
end
)
-- Create string
order=""
print(#crdsClear)
result = {[1]=""}
for i=1, #crdsClear, 1 do
order = order..crdsClear[i].x.." "
result[1] = result[1].. crdsClear[i].symbolName
end
print(order)
print(result[1])