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