【发布时间】:2012-09-30 19:19:26
【问题描述】:
T = {
{Name = "Mark", HP = 54, Breed = "Ghost"},
{Name = "Stan", HP = 24, Breed = "Zombie"},
{Name = "Juli", HP = 100, Breed = "Human"}},
问题:
如何只打印姓名?
和
如何按 HP 排序?
【问题讨论】:
标签: lua
T = {
{Name = "Mark", HP = 54, Breed = "Ghost"},
{Name = "Stan", HP = 24, Breed = "Zombie"},
{Name = "Juli", HP = 100, Breed = "Human"}},
问题:
如何只打印姓名?
和
如何按 HP 排序?
【问题讨论】:
标签: lua
您需要使用pairs 或ipairs 函数对表进行迭代以打印名称。 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 值。
【讨论】:
ipairs() 和pairs() 的含义。 ipairs() 迭代数字索引,pairs() 迭代每个元素。