我已经在这里找到了尽可能多的答案,这些答案的标题我认为足够接近我的问题来研究。我还没有看到任何人遇到我的确切问题,所以我在问一个问题,我希望只是我对一个简单的事实一无所知。
我正在尝试编写一个记录 HP (int) 和距离 (boolean) 的表,然后按 HP 排序,只有 Range 中靠近顶部的那些。
local tableTest = {
{hp = 64, range = true, name="Frank"},
{hp = 100, range = true, name="Joe"},
{hp = 2, range = false, name="Jim"},
{hp = 76, range = true, name="Tim"},
{hp = 17, range = false, name="Jill"},
{hp = 16, range = true, name="Phillip"},
}
-- Sort by HP and Range to find lowest Unit in Range.
table.sort(tableTest, function(x,y) return x.hp < y.hp and x.range end)
for i=1, #tableTest do print(tableTest[i].name, tableTest[i].hp) end
输出是:
Phillip 16
Jim 2
Frank 64
Jill 17
Tim 76
Joe 100
我期望的输出是:
Phillip 16
Frank 64
Tim 76
Joe 100
Jim 2
Jill 17
我祈祷这只是我对 table.sort 如何与这样的多个检查一起工作的误解(我认为它更接近于你如何声明这样的变量)。
编辑
附加信息 - 如果我更改range=false
索引在表中的位置顺序,输出也会更改(仍然不正确)。这些值只是在排序后将自己排序到不同的索引中。