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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP