我已经查看了尽可能多的答案,这些答案的标题与我的问题相近,以便进行研究。我没有看到任何人有我确切的问题,所以我提出了一个问题,希望这只是我对简单事实的无知。
我正在尝试编写一个记录HP(整数)和距离(布尔值)的表格,然后按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
索引的位置顺序,输出也会相应改变(仍然不正确)。排序后,值只是在不同的索引中自动排序。
x.range
是false
而y.range
是true
,因此无论hp
的值如何,x
都应该在y
之后。 - Yu Hao