table的sort函式
比如按照大小進行排序,下面這種寫法在某些情況下可能會排序錯誤,甚至報invalid order function for sorting
table.sort(srctable,function(vo1,vo2)
return vo1 >= vo2
end)
這是為什麼呢?
當兩個值相等時,lua的規定只能返回false,不能返回true。
因為sort函式裡面要寫清楚所有的情況,比如上面的,如果vo1 == vo2 return true
和lua的規則不相符會報錯,這裡需要對於值相等的使用其它條件或者return false,才能得到正確的結果。
如果可能出現的情況會比較多,這時候使用sort,可能要寫的很複雜,且排序不穩定。
sort函式的返回值
function(vo1,vo2)
return vo1 > vo2
end
return true 是要讓vo1排在前
return false 要讓vo2排在前
如果排序中的條件唯一,但可能出現的情況有很多,例下這個例子,把繫結的排序在前面,非繫結在後面。
可以把滿足條件a的元素放在tba,不滿足的元素放tbb,再這兩個table插入到乙個新的table中。
示例:
local binds = {}
local others = {}
for i, v in pairs(stufflist) do
if v.isbind == true then
table.insert(binds, v)
else
table.insert(others, v)
endendlocal sorted = {}
for i, v in ipairs(binds) do
table.insert(sorted, v)
endfor i, v in ipairs(others) do
table.insert(sorted, v)
end
最後得到的sorted就是經過排序後的列表。 Lua Table根據value排序
使用lua開發需要把有用的資料全部存進table裡,lua也提供了乙個sort介面來給table排序,但是sort的實現也是基於氣泡排序,他預設table的key是從1開始的,這樣就會造成當我們的key是一些特殊的標誌位,比如遊戲中揹包資料的guid,就會無法正常排序。所以我們需要單獨封乙個介面來實...
openoffice 安裝與報錯解決
參考bolg 環境 centos 7.5 openoffice4.0 安裝方法 上傳安裝,鏈結位址安裝包 命令安裝 wget tar zxvf apache openoffice 4.0.0 linux x86 64 install rpm zh cn.tar.gz c data soft 2.解壓...
Lua Table介紹與基礎操作
table是lua的一種資料結構用來幫助我們建立不同的資料型別 可以用任意型別的值來作陣列的索引,但這個值不能是 nil。不固定大小的,你可以根據自己需要進行擴容。table常用操作 構造器是建立和初始化表的表示式。表是lua特有的功能強大的東西。最簡單的建構函式是 用來建立乙個空表。初始化陣列 t...