畢業了,正式工作了,隨便寫寫。
目前在實習,接觸的是u3d遊戲開發,設計到語言有erlang,c#,lua。最近在做揹包的排序的時候遇到的乙個小問題就貼出來了。
檢視官方文件
第乙個引數是乙個table,第二個引數是外部函式,如下**
table.sort(showlist, sortfunc);
local function itemsortfunc(item1, item2)
if tb.itemtable[item1.sid].item_type == tb.itemtable[item2.sid].item_type then
return tb.itemtable[item1.sid].level > tb.itemtable[item2.sid].level;
endreturn tb.itemtable[item1.sid].item_type < tb.itemtable[item2.sid].item_type;
end
第二個引數返回值為boolean型別,此函式應滿足以下條件: 接受兩個引數(依次為a, b), 並返回乙個布林型的值, 當a應該排在b前面時, 返回true, 反之返回false.
例如, 當我們需要降序排序時, 可以這樣寫:
> sortfunc = function(a, b) return b < a end
> table.sort(tbl, sortfunc)
> print(table.concat(tbl, ", "))
gamma, delta, beta, alpha
用類似的原理還可以寫出更加複雜的排序函式. 例如, 有乙個table存有工會三名成員的姓名及等級資訊:
guild = {}
table.insert(guild, )
table.insert(guild, )
table.insert(guild, )
對這個table進行排序時, 應用以下的規則: 按等級公升序排序, 在等級相同時, 按姓名公升序排序.
可以寫出這樣的排序函式:
function sortlevelnameasc(a, b)
if a.level == b.level then
return a.name < b.name
else
return a.level < b.level
endend
lua中對table的排序
lua中對table的排序一般是用lua自帶的table.sort 函式排序,一般不採用自己寫的排序的方式,以下來說一說 table.sort 排序和在工作中遇到的問題 1.排序的方式 table.sort tbl,function a,b return a b end 以上是乙個簡單的例子,得到的...
lua中table引用問題
loacl a loacl b a a nil 雖然lua table的賦值是引用,修改a或b會同時修改。但是如果對a nil,此時b 還是指向原來的 本質上就是a和b指向同一塊記憶體位址,a nil只是將指標賦空,b還持有對該記憶體的引用 在物件導向的語言中,我們經常將乙個物件的指標或引用存到另乙...
Lua中對table排序例項
這篇文章主要介紹了lua中對table排序例項,本文講解了lua中對table的一般排序方法 針對值的排序 同時對鍵值進行排序等方法,需要的朋友可以參考下 lua中利用到的排序的基本上就是建構函式 table 了,為了便於和c區分開來,我俗稱它為表單。例項 原理就是lua整合的冒泡演算法 排序的一般...