Lua编程中的排序函数
Lua中最常用的函数之一是排序函数,它由Lua库提供,该函数将表作为参数进行排序并对表中存在的值进行排序。
sort函数还接受一个表的另一个参数,该参数是一个函数,称为order函数。如果我们要按特定顺序对表的元素进行排序,则此order函数用于提供逻辑。
order函数接受两个参数,如果第一个参数在排序数组中排在第一位,则这两个参数必须返回true。如果未提供此功能,则sort使用默认的小于操作(对应于`<´运算符)。
语法
table.sort(x,f)
在上面的语法中,x标识符用于表示我们要对哪些条目进行排序的表的名称,f标识符用于表示order函数,如果您同意默认的order则不需要提供排序。
示例
让我们考虑一个简单的表示例,其中存储了不同的字符串,我们使用通用for循环打印表的值。
考虑下面显示的例子-
t = { "the", "quick", "brown", "fox" } for i,v in ipairs(t) do print(v) end输出结果
the quick brown fox
现在,让我们考虑我们要对上表的元素进行排序的场景,为此我们只需要使用Lua库提供给我们的排序功能。
示例
考虑下面显示的例子-
t = { "the", "quick", "brown", "fox" } table.sort(t) for i,v in ipairs(t) do print(v) end输出结果
brown fox quick the
现在让我们考虑一个更复杂的例子,我们将尝试使用order函数。
示例
考虑下面显示的例子-
t = { { str = 42, dex = 10, wis = 100 }, { str = 18, dex = 30, wis = 5 } } table.sort(t, function (k1, k2) return k1.str在上面的例子中,想法是根据“str”字段对表中的值进行排序,因此当我打印字段的值时,它们将按该顺序排列。
输出结果
18 30 5 42 10 100