2013-03-16 46 views
1

我有以下結構的表:排序LUA表

我想要做的,就是用一個委託函數進行排序與​​table.sort(),這樣該表中的優先級變量(高,低,中等等)對列表中的高位進行排序,然後是中等和低位。我會如何去做這件事?

回答

4

你似乎知道table.sort是如何工作的,所以你卡在哪裏? 只需創建轉換優先名稱爲整數查找表,並且比較這些:

priorities = {high = 2, medium = 1, low = 0} 
table.sort(t, function(e1, e2) 
    return priorities[e1[2]] > priorities[e2[2]] 
end) 
0
table.sort(t, 
    function(e1, e2) 
    return e1[2]:sub(-1) < e2[2]:sub(-1) 
    end 
) 
+0

滑稽的想法,但非常模糊和不靈活的,你不覺得嗎? – 2013-03-16 19:03:37

+0

@ m.buettner - 這是代碼高爾夫風格的做法:-) – 2013-03-16 19:17:07

+0

我只是想補充一點小心,因爲這是一個非常緊湊的解決方案,但我認爲不應該進入生產代碼;) – 2013-03-16 19:36:20