함수를 이용한 사용자 정의 정렬
Coddy Lua 여정의 로직 및 흐름 제어 (Logic & Flow) 섹션에 포함된 레슨. 54개 중 8번째.
table.sort()는 간단한 숫자 또는 문자열 목록에서 훌륭하게 작동하지만, 실제 데이터는 종종 더 복잡합니다. 플레이어 기록, 재고 items 또는 게임 score가 담긴 table이 있을 수 있으며, 각 항목 자체가 여러 필드를 가진 table입니다.
이러한 복잡한 구조를 정렬하려면 table.sort()에 두 항목을 정확히 어떻게 비교할지 알려줘야 합니다. 이때 사용자 지정 비교 function이 필수적입니다. 비교 function은 두 요소를 받아 정렬된 순서에서 첫 번째 요소가 두 번째 요소보다 앞에 와야 하면 true를 반환합니다.
다음은 플레이어 기록 테이블을 사용한 예시입니다:
local players = {
{name = "Alice", score = 150},
{name = "Bob", score = 200},
{name = "Charlie", score = 175}
}
table.sort(players, function(a, b)
return a.score > b.score
end)정렬 후 players 테이블은 점수를 기준으로 내림차순으로 정렬되며, Bob이 첫 번째(200), Charlie가 두 번째(175), Alice가 세 번째(150)가 됩니다. 비교 function은 순서를 결정하기 위해 각 players 테이블의 score 필드에 액세스합니다.
원하는 어떤 필드로든 정렬할 수 있습니다. 이름은 알파벳순으로, 레벨은 숫자순으로 정렬하거나 여러 기준을 결합할 수도 있습니다.
직접 해보기
이 레슨에는 코드 챌린지가 없습니다.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
로직 및 흐름 제어 (Logic & Flow)의 모든 레슨
직접 연습해 보세요: 온라인 Lua 컴파일러