Menu
CoddyTech

Sortowanie niestandardowe za pomocą funkcji

Część sekcji Logika i przepływ programu ścieżki Lua w Coddy. Lekcja 8 z 54.

Chociaż table.sort() świetnie sprawdza się w przypadku prostych list liczb lub ciągów znaków, rzeczywiste dane są często bardziej złożone. Możesz mieć tablicę rekordów graczy, przedmiotów w ekwipunku lub wyników w grze, w której każdy wpis jest sam w sobie tablicą z wieloma polami.

Aby posortować te złożone struktury, musisz dokładnie określić dla table.sort(), jak porównywać dwa elementy. Właśnie dlatego niestandardowe funkcje porównujące są niezbędne. Funkcja porównująca przyjmuje dwa elementy i zwraca true, jeśli pierwszy powinien znaleźć się przed drugim w posortowanej kolejności.

Oto przykład z tabelą rekordów graczy:

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)

Po sortowaniu tabela graczy będzie uporządkowana według wyniku malejąco: na pierwszym miejscu będzie Bob (200), na drugim Charlie (175), a na trzecim Alice (150). Funkcja porównująca odczytuje pole score z tabeli każdego gracza, aby ustalić ich kolejność.

Możesz sortować według dowolnego pola: nazwy alfabetycznie, poziomy numerycznie, a nawet łączyć wiele kryteriów.

Spróbuj swoich sił

Ta lekcja nie zawiera wyzwania z kodem.

quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator Lua online