用函数自定义排序
本课属于 Coddy Lua 学习旅程的“逻辑与流程”单元。第 8 课,共 54 课。
虽然 table.sort() 很适合对简单的数字或字符串列表进行排序,但现实中的数据往往更复杂。你可能有一个玩家记录、库存物品或游戏分数表,其中每个条目本身都是包含多个字段的表。
要对这些复杂结构进行排序,你需要明确告诉 table.sort() 如何比较两个条目。这时,自定义比较函数就必不可少了。比较函数接收两个元素,如果第一个元素在排序后应该排在第二个元素前面,就返回 true。
下面是一个包含玩家记录表的示例:
local players = {
{name = "Alice", score = 150},
{name = "Bob", score = 200},
{name = "Charlie", score = 175}
}
table.sort(players, function(a, b)
return a.score > b.score
end)排序后,玩家表将按分数降序排列,Bob 排在第一位(200),Charlie 排在第二位(175),Alice 排在第三位(150)。比较函数会访问每个玩家表的 score 字段,以确定它们的顺序。
你可以按任意字段排序:按名称的字母顺序、按等级的数值顺序,甚至可以组合多个条件。
亲手试试
这节课没有代码挑战。
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: Lua 在线编译器