Sorting 正在检查我的工作,但如何打印()?

Sorting 正在检查我的工作,但如何打印()?,sorting,printing,lua,lua-table,Sorting,Printing,Lua,Lua Table,我试着练习table.sorting和tables。我取下面的表t{}和table。根据每个名称的数值对它进行排序。在将原始表排序为a{}后,我在打印原始表时遇到问题(我正试图打印a{}以清除该问题)。我应该将打印(和什么代码?)放入这样的代码中 对不起,这是一个新手问题。但是我在理解将print()行粘贴到函数中的位置或检查它们的代码时遇到了问题。我正在用打印等更改返回。我仍然不能理解这部分 我感谢你们的帮助 t = { Steve = 4, Derek = 1, M

我试着练习
table.sort
ing和tables。我取下面的表
t{}
table。根据每个名称的数值对它进行排序。在将原始表排序为
a{}
后,我在打印原始表时遇到问题(我正试图打印
a{}
以清除该问题)。我应该将
打印(
和什么代码?
放入这样的代码中

对不起,这是一个新手问题。但是我在理解将
print()
行粘贴到
函数中的位置或检查它们的代码时遇到了问题。我正在用
打印
等更改
返回
。我仍然不能理解这部分

我感谢你们的帮助

 t = {
    Steve = 4,
    Derek = 1,
    Mike = 3,
    Steph = 8,
    Mary = 15,
    Danny = 10
    }

 function pairsByKeys (t,f) 
    local a = {}

    for x in pairs (t) do
        a[#a + 1] = x
    end

    table.sort(a,f)
    local i = 0
    return function ()
    i = i + 1
    return a[i], t[a[i]]
    end
end

local timer = os.time()
repeat until os.time() > timer + 10

pairsByKeys
是作为迭代器函数实现的(如标准库提供的
pairs
ipairs
),因此您可以在类似这样的通用
for
语句中使用它(使用默认比较函数):

输出:

Danny   10
Derek   1
Mary    15
Mike    3
Steph   8
Steve   4

啊!非常感谢。如果我想让他们按数字值对名字进行排序,那么我的代码有什么错?例如,
Dekek 1
将是第一个,然后
Mike 3
将是第二个,等等@Pwrcdr87该函数被命名为
pairsByKeys
,因为它所做的是按键排序。您需要一个不同的迭代器来按值排序。@Pwrcdr87一个简单的方法是使用反向键值对构建另一个表,如
{4=Steve,1=Derek}
等,然后使用
pairsByKeys
打印此表。非常正确。如果有一个实例,其中的信息是通过条形码扫描仪检索的,并且有一堆信息通过。例如,姓名;年龄;地址;电话。现在,如果有人告诉我他们想要按年龄排序的
t{}
,你能告诉我按年龄排序上述代码的正确代码吗?我刚才在PiL中看到“
的名称,行在pairsByKeys(line)do print(name,line)end
”,我读了很多遍,但显然完全忘了用上面的代码结尾。我是个笨蛋。但是我关于条形码扫描的问题仍然在上面。我想帮助修复我的代码,按照值和名称对该表进行排序,这些值和名称与它们的链接值正确匹配。
Danny   10
Derek   1
Mary    15
Mike    3
Steph   8
Steve   4