【问题标题】:Lua - Table in a Table Printing and SortingLua - 表格中的表格打印和排序
【发布时间】: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


    【解决方案1】:

    您需要使用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 值。

    【讨论】:

    • 您颠倒了ipairs()pairs() 的含义。 ipairs() 迭代数字索引,pairs() 迭代每个元素。
    猜你喜欢
    • 2018-05-19
    • 2014-06-20
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    • 2011-10-07
    • 2021-12-31
    • 2014-08-01
    • 2012-09-18
    相关资源
    最近更新 更多