Lua - 表格中的表格打印和排序

T = {
{Name = "Mark", HP = 54, Breed = "Ghost"},
{Name = "Stan", HP = 24, Breed = "Zombie"},
{Name = "Juli", HP = 100, Breed = "Human"}},

问题:

我该如何仅打印名称?

并且

如何按 HP 排序?

原文链接 https://stackoverflow.com/questions/1656444

点赞
stackoverflow用户126042
stackoverflow用户126042

你需要使用pairsipairs函数遍历表格以打印名称。ipairs从1到N(只有数值索引),而pairs则遍历表中每个元素,顺序不确定。

> T = { {Name = "Mark", HP = 54, Breed = "Ghost"}, {Name = "Stan", HP = 24, Breed = "Zombie"}, {Name = "Juli", HP = 100, Breed = "Human"}}
> for _,t in ipairs(T) do print(t.Name) end
Mark
Stan
Juli

然后,您可以使用table.sort函数对表进行原地排序:

> table.sort(T, function(x,y) return x.HP < y.HP end)
> for _,t in ipairs(T) do print(t.Name, t.HP) end
Stan    24
Mark    54
Juli    100

table.sort的第二个参数是您选择的比较函数;在本例中,我们只想比较HP值。

2009-11-01 05:16:25