2013-03-16 2 views
1

나는 다음과 같은 구조의 테이블이 있습니다 내가 원하는 무엇정렬 루아 테이블

table = { 
    [1] = {"something", "high"} 
    [2] = {"something else", "low"} 
    [3] = {"something further", "medium"}, 
    [4] = {"yet more something", "medium"}, 
} 

는, 그래서 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

매우 컴팩트 한 솔루션이지만 생산 코드에 들어가야한다고 생각하지 않으므로주의를 기울이고 싶습니다.) –