【问题标题】:Corona table.sort()电晕表.sort()
【发布时间】:2012-12-18 10:33:21
【问题描述】:
local tile = {"C", "O", "L", "I", "N", "F", "A", "R", "R", "E", "L", "L"}       
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 这将随机播放您的表格内容,而不会出现上述方法的任何问题。

【问题讨论】:

标签: lua coronasdk


【解决方案1】:

如果你想打乱一个数组,看看my shuffle snippet

主要思想是您创建一个包含随机数的项目表,在保留原始索引的同时对其进行排序,然后根据新顺序对项目重新排序。

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

【讨论】:

【解决方案2】:

假定给table.sort 的排序函数是确定性的,因为它总是为同一对参数返回相同的结果,并且是一致的,因为a&lt;bb&lt;c 暗示@987654324 @。

【讨论】:

  • 我不确定我明白你在说什么。这个问题有解决办法吗?
  • @Gooner,哪个问题?你给table.sort*的函数是*无效的。
  • 我不太明白它是如何工作的,有没有办法随机化表格的元素,每次使用都会起作用?
  • @Gooner,请就如何随机化表格提出一个单独的问题。
  • 没关系,我找到了我需要的东西。我在原始问题中发布了一个链接
猜你喜欢
  • 2017-03-19
  • 1970-01-01
  • 1970-01-01
  • 2016-07-16
  • 2013-04-12
  • 2013-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多