Corona中的table.sort()方法。

--定义一个表
local tile = {"C", "O", "L", "I", "N", "F", "A", "R", "R", "E", "L", "L"}
--利用sort方法进行排序,sort()接受两个参数,第一个参数是需要被排序的表,第二个参数是排序方法,此处使用随机的方法来排序.
table.sort(tile, function(a,b) return ( math.random(1,2) <2) end)
--打印结果到控制台
print ( 'table: '..table.concat( tile, ', '))

我正在随机排序这个表格,它似乎工作得很好,但是每二次运行程序时我会收到这个错误:invalid order function for sorting。有什么建议吗?

我已经找到了解决方法。 http://developer.coronalabs.com/code/shufflerandomize-tables 这将随机重排你的表格内容,没有上面方法的任何问题。

点赞
用户107090
用户107090

table.sort 接收的排序函数被假定为是确定性的,也就是说对于相同的两个参数它总是返回相同的结果;同时也被假定为是一致性的,也就是说如果 a<bb<c 都成立,那么 a<c 也必须成立。

2012-12-18 11:18:39
用户221509
用户221509

如果你想要对一个数组进行洗牌,可以看看 我的洗牌代码片段

主要思路是创建一个带随机数的项目表,同时保留原始索引进行排序,并根据新的顺序重新排序项目。

function shuffled(tab)
    local n, order, res = #tab, {}, {}
    for i=1,n do order[i] = { rnd = math.random(), idx = i } end
    table.sort(order, function(a,b) return a.rnd < b.rnd end)
    for i=1,n do res[i] = tab[order[i].idx] end
    return res
end
2012-12-28 12:14:02