2013-03-16 3 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

Забавная идея, но довольно неясными и негибким, вы не думаете? –

+0

@ m.buettner - Это был подход стиля кода-гольфа :-) –

+0

Я просто хотел добавить примечание о предостережении, так как это очень компактное решение, но я думаю, что не следует входить в производственный код;) –

Смежные вопросы