Lua 编程中的排序函数


Lua 中最常用的函数之一是 sort 函数,它由 Lua 库提供,该函数将一个表格作为参数,并对表格中存在的数值进行排序。

sort 函数还可以接收一个额外的参数,该参数也是一个函数,称为排序函数。如果我们希望以某种特定顺序对表格的元素进行排序,则可以使用此排序函数来提供逻辑。

排序函数接收两个参数,如果第一个参数应该在排序后的数组中排在前面,则这两个参数必须返回 true。如果未提供此函数,则 sort 使用默认的小于运算符(对应于 `<´ 运算符)。

语法

table.sort(x,f)

在上面的语法中,x 标识符用于表示我们要对其条目进行排序的表格的名称,f 标识符用于表示排序函数,如果您可以接受默认的排序顺序,则不需要提供此函数。

示例

让我们考虑一个简单的表格示例,其中我们在其中存储了不同的字符串,并使用通用 for 循环打印表格的值。

请考虑以下所示的示例:

实时演示

t = { "the", "quick", "brown", "fox" }
for i,v in ipairs(t) do print(v) end

输出

the
quick
brown
fox

现在,让我们考虑一下我们希望对上述表格的元素进行排序的情况,为此,我们只需要使用 Lua 库提供的 sort 函数。

示例

请考虑以下所示的示例:

实时演示

t = { "the", "quick", "brown", "fox" }
table.sort(t)
for i,v in ipairs(t) do print(v) end

输出

brown
fox
quick
the

现在让我们考虑一个更复杂的示例,在该示例中,我们将尝试使用排序函数。

示例

请考虑以下所示的示例:

实时演示

t = {
   { str = 42, dex = 10, wis = 100 },
   { str = 18, dex = 30, wis = 5 }
}
table.sort(t, function (k1, k2) return k1.str < k2.str end )
for i,v in ipairs(t) do print(v.str,v.dex,v.wis) end

在上面的示例中,我们的想法是根据“str”字段对表格中的值进行排序,因此,当我打印字段的值时,它们将按该顺序排列。

输出

18   30  5
42   10  100

更新时间: 2021年7月19日

9K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告