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
广告