Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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_Sorting_Lua - Fatal编程技术网

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

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,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
使用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])