【发布时间】:2013-11-14 01:15:59
【问题描述】:
我搜索了高低,并试图在不同的阶段实现这一目标。 我正在尝试对基于另一个表值的几个表进行排序。我尝试通过播种 k, v 来对这些表进行排序,其中 v 是布尔值。
这是我到目前为止所得到的。提前感谢您的帮助。
function byInstallsField(x,y)
-- cant seem to make sens out of the sorting
if x.installed then return true
elseif y.installed == false then return false
end
end
-- var is the index passed into the function
-- pRect:new is a custom lib for rect' drawing
playerRect[ var ] = pRect:new(_W + dimesion_for_rect * var, 0,
dimesion_for_rect,
dimesion_for_rect,
3 ) -- _x, _y , _hieght, _width, round
playerRect.installed = inst;
table.sort( playerRect, byInstallsField )
downloadedImage[ var ] = fb_friends:new(var, imageOnFile,
playerRect[ var ].x,
playerRect[ var ].y,
0.25, 0.25, 0, dimesion_for_rect - 5)
downloadedImage[ var ].id = var
downloadedImage.installed = inst
table.sort( downloadedImage, byInstallsField )
我希望对 playerRect 和下载的图像表进行排序的结果,以便安装的 that = true 将引导数组..
播放器 1.installed = true ,播放器 2.installed = true ,播放器 3.installed = false
【问题讨论】:
-
澄清
playerRect.installed = inst的用途。看起来您有一张表格,但每个子表格都有installed字段吗?playerRect.installed在排序中不起作用。子表是您的比较函数中要比较的内容 - 如果 2 个子表缺少installed字段,它甚至不会返回值。 -
即使
byInstallsField的两个参数都有installed的值,该函数仍有可能不返回值(x.installedfalse 和y.installedtrue)。您的函数始终必须返回 true 或 false。另一种思考方式是,仅将installed为 true 的所有项目都放在installed为 false 的所有项目之前是不够的——您需要设计一个算法,以便 每个 一对项目,其中一个排在另一个之前。
标签: sorting lua coronasdk lua-table