【发布时间】:2014-05-28 22:14:22
【问题描述】:
我已经研究了很长一段时间的排序表,我看到了很多例子,但我似乎无法让它们工作。
我正在尝试从一个方法中获取 playerValues 并将它们存储到一个表中(我相信我已经到这里了)然后我想按时间对这些值进行排序。
示例代码:
我的数组是什么样子的
sellTest = {}
sellTest.eventType = {}
sellTest.secsSinceEvent = {}
sellTest.buyer = {}
sellTest.seller = {}
sellTest.someParam = {}
sellTest.itemName = {}
sellTest.soldAmount = {}
我如何存储值
for j = 0, totalEvents do
for i = 0, numEvents do
sellTest.eventType[i], sellTest.secsSinceEvent[i], sellTest.seller[i],
sellTest.buyer[i], sellTest.someParam[i], sellTest.itemName[i],
sellTest.soldAmount[i] = GetPlayerInfo(event(j),SELL_SALES, i )
end
end
那么我是如何尝试显示表格的(卡在这里)
local function sortMyTable()
table.sort(sellTest, function(a, b) return secsSinceEvent[2] > secsSinceEvent[2] end)
for k,v in ipairs(sellTest) do
print(v[1].. ' == '.. v[2])
end
end
我知道该表完全错误,我仍在学习 LUA 并研究表功能。
更新,我应该这样存储数据吗?
示例 1:?
local sellTest = {}
sellTest['eventType'] = {}
sellTest['secsSinceEvent'] = {}
或 示例 2:
local sellHistory = {
eventType = {},
secsSinceEvent = {}
}
【问题讨论】:
-
排序函数应该是
a.secsSinceEvent[2] > b.secsSinceEvent[2]还是类似的?因为正如所写的那样,它是常量并且不使用它的任何参数。 -
另外,为什么要将单个事件的数据拆分为多个并行数组?为什么不只有一个事件数组,每个事件都是一个包含所有相关数据的表?
-
嗯,我一直在尝试不同的东西?你是什么意思单个事件数组?在我上面的评论中添加了我认为你的意思
-
假设我正确理解了您的代码,销售事件的各种信息位分布在 sellTest.* 表中。第 N 个事件的数据位于每个表的第 N 个索引字段中。取而代之的是一个单一的 sellHistory 表,其中包含
{eventType = ..., secsSinceEvent = ..., buyer = ..., seller = ..., itemName = ..., soldAmount = ...}左右形式的表作为其编号索引。