0Pricing
Lua Academy · Lekcja

Długość i sortowanie

Policzy i posortuje Pan/Pani sekwencje.

Długość i sortowanie to bezpłatna lekcja Lua Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Lua Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Lua Academy zawiera 4 lekcji w sumie.

Operator długości

Operator # zwraca liczbę elementów w sekwencji.

W przypadku uporządkowanej tabeli z indeksami zaczynającymi się od 1 i zawierającej trzy elementy #t wynosi 3. Ostatni element znajduje się pod indeksem #t.

local list = {"a", "b", "c"}
print(#list)
print(list[#list])

Długość w pętli

Należy użyć #t jako górnej granicy numerycznej pętli for, aby odwiedzić każdy indeks.

Ponieważ sekwencje mają indeksy zaczynające się od 1, zakres to 1, #t.

local nums = {10, 20, 30, 40}
for i = 1, #nums do
  print(i, nums[i])
end

Puste tabele

Pusta sekwencja ma długość 0.

Dlatego #t == 0 to szybki sposób sprawdzenia, czy lista zawiera jakiekolwiek elementy.

local empty = {}
print(#empty)
if #empty == 0 then
  print("list is empty")
end

Długość po zmianach

Po dodaniu lub usunięciu elementów za pomocą funkcji table wartość # jest odpowiednio aktualizowana.

Wstawienie zwiększa liczbę elementów, a usunięcie ją zmniejsza.

local list = {"a", "b"}
table.insert(list, "c")
print(#list)
table.remove(list)
print(#list)

Luki zakłócają określanie długości

Operator # działa niezawodnie tylko dla sekwencji bez luk. Luka może sprawić, że wynik będzie niezdefiniowany.

Należy używać table.insert i table.remove, aby wynik operatora # pozostał wiarygodny.

local good = {1, 2, 3}
print(#good)
table.insert(good, 4)
print(#good)

Sortowanie w miejscu

table.sort(t) porządkuje sekwencję bezpośrednio, domyślnie od najmniejszego do największego elementu.

Zmienia oryginalną tabelę zamiast zwracać nową.

local nums = {3, 1, 2}
table.sort(nums)
print(nums[1], nums[2], nums[3])

Sortowanie łańcuchów znaków

Łańcuchy znaków są domyślnie sortowane alfabetycznie, znak po znaku.

Po sortowaniu indeks 1 zawiera pierwszy element w uporządkowanej sekwencji.

local names = {"Cy", "Ann", "Bob"}
table.sort(names)
print(names[1], names[2], names[3])

Kolejność malejąca

Aby określić kolejność, należy przekazać funkcję porównującą. Zwracanie wartości a > b sortuje elementy od największego.

Funkcja decyduje, czy a powinno znajdować się przed b.

local nums = {3, 1, 4, 2}
table.sort(nums, function(a, b)
  return a > b
end)
print(nums[1], nums[2], nums[3], nums[4])

Niestandardowe porównania

Funkcje porównujące pozwalają sortować według dowolnej reguły, na przykład według długości łańcucha znaków zamiast alfabetu.

Poniżej krótsze słowa są umieszczane jako pierwsze.

local words = {"hello", "hi", "howdy"}
table.sort(words, function(a, b)
  return #a < #b
end)
print(words[1], words[2], words[3])

Długość i sortowanie

Narzędzia można połączyć: najpierw posortować listę, a następnie odczytać skrajne elementy według ich pozycji.

Po sortowaniu rosnącym minimum znajduje się pod indeksem 1, a maksimum pod indeksem #t.

local data = {7, 2, 9, 4}
table.sort(data)
print("min:", data[1])
print("max:", data[#data])

Sortowanie, a następnie iteracja

Typowy potok przetwarzania wygląda następująco: należy posortować sekwencję, a następnie przejść po niej za pomocą ipairs, aby wypisać elementy w kolejności.

Sortowanie zmienia tę samą tabelę z indeksami zaczynającymi się od 1, dlatego iteracja odbywa się w nowej kolejności.

local scores = {50, 10, 30}
table.sort(scores)
for i, s in ipairs(scores) do
  print(i, s)
end

Szybkie sprawdzenie

Proszę przypomnieć sobie, co zwraca operator długości.

Podsumowanie

Poznali Państwo zasadę, że #t zlicza elementy w sekwencji bez luk, ostatni element znajduje się pod indeksem t[#t], a table.sort porządkuje elementy w miejscu — domyślnie rosnąco lub zgodnie z własną funkcją porównującą.

W połączeniu z insert, remove i ipairs mogą już Państwo swobodnie zarządzać sekwencjami w Lua.

Często zadawane pytania

Czy lekcja „Długość i sortowanie” jest bezpłatna?

Tak — pełny tekst „Długość i sortowanie” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Lua Academy, przejdź na CoddyKit PRO. Kurs Lua Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Długość i sortowanie”?

Policzy i posortuje Pan/Pani sekwencje. Ćwiczysz Lua Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Lua Academy?

Nie wymagamy żadnego doświadczenia. Lua Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Długość i sortowanie”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Lua Academy?

Tak. Każda lekcja Lua Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Tablice jako tabele
  2. Dodawanie i usuwanie elementów
  3. Iterowanie za pomocą ipairs
  4. Długość i sortowanie
← Powrót do Lua Academy