Zakresy znaków i niestandardowe zakresy
Wyjdź poza liczby całkowite
Zakresy znaków i niestandardowe zakresy to bezpłatna lekcja Kotlin 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 Kotlin Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Kotlin Academy zawiera 4 lekcji w sumie.
Więcej niż liczby całkowite
Zakresy nie służą tylko do pracy z Int. Kotlin obsługuje zakresy znaków oraz innych typów porównywalnych.
W tej lekcji poznają Państwo zakresy znaków oraz sposób dołączania typów niestandardowych za pomocą rangeTo.
Powtórzenie zakresów znaków
Znaki mają określone uporządkowanie, dlatego 'a'..'z' jest prawidłowym zakresem.
Można po nim iterować, sprawdzać przynależność i wykonywać inne operacje.
fun main() {
for (c in 'a'..'f') print(c)
println()
println('q' in 'a'..'z')
}Sprawdzanie poprawności znaków
Zakresy znaków ułatwiają czytelną walidację danych wejściowych, na przykład sprawdzanie, czy znak jest cyfrą lub literą.
fun isDigit(c: Char): Boolean = c in '0'..'9'
fun main() {
println(isDigit('7'))
println(isDigit('x'))
}Zliczanie liter
Można szybko utworzyć alfabet, iterując po zakresie znaków i zbierając jego wartości.
fun main() {
val alphabet = ('a'..'z').toList()
println(alphabet.size)
println(alphabet.first())
println(alphabet.last())
}Zakresy Long
Zakresy działają również dla typu Long, co jest przydatne w przypadku dużych przedziałów liczbowych.
Obowiązują te same operatory.
fun main() {
val big = 1L..5L
println(big.sum())
}Zakresy typów Comparable
Każdy typ Comparable może utworzyć zakres za pomocą .., ale takie zakresy obsługują tylko sprawdzanie przynależności, a nie iterację.
Na przykład zakresy String sprawdzają porządek leksykograficzny.
fun main() {
val range = "apple".."mango"
println("cherry" in range)
println("zebra" in range)
}Dlaczego po niektórych zakresach nie można iterować
Iterowanie wymaga określonego kroku. Liczby całkowite i znaki go mają (dodanie 1), ale łańcuchy znaków i wartości typu Double nie mają oczywistej następnej wartości.
Dlatego takie zakresy obsługują in, ale nie pętle for.
fun main() {
val r = 1.0..5.0
println(2.5 in r)
// for (x in r) // not allowed for Double
}Typy niestandardowe z rangeTo
Operator .. wywołuje funkcję rangeTo. Jeśli klasa implementuje Comparable, obsługa sprawdzania przynależności do zakresu jest dostępna automatycznie.
W tym przykładzie prosta klasa reprezentująca wersję porównuje wartości numerycznie.
data class Ver(val n: Int) : Comparable<Ver> {
override fun compareTo(other: Ver) = n - other.n
}
fun main() {
val range = Ver(1)..Ver(5)
println(Ver(3) in range)
println(Ver(9) in range)
}Operator od kulis
Zapis a..b jest równoważny wywołaniu a.rangeTo(b).
Postać operatorowa jest po prostu wygodniejszą składnią tej samej funkcji.
fun main() {
val r1 = 1..5
val r2 = 1.rangeTo(5)
println(r1.toList() == r2.toList())
}Wybór odpowiedniego zakresu
Krótka wskazówka:
- Liczby i znaki → iterowanie i sprawdzanie
- Wartości typu Double i własne typy Comparable → tylko sprawdzanie przynależności
- Potrzebny jest krok? Należy użyć progresji liczb całkowitych lub znaków
fun main() {
println('m' in 'a'..'z')
println(3.5 in 1.0..4.0)
println(50 in 1..100)
}Podsumowanie
Zakresy można uogólniać na wiele typów:
- Zakresy znaków umożliwiają iterowanie i walidację
- Zakresy
Longobsługują duże przedziały - Typy Comparable i typy niestandardowe obsługują sprawdzanie przynależności
..jest skróconym zapisemrangeTo
fun main() {
val vowels = "aeiou"
for (c in 'a'..'z') {
if (c in vowels) print(c)
}
println()
}Szybkie sprawdzenie
Proszę sprawdzić zrozumienie zakresów znaków i zakresów niestandardowych.
Powtórzenie
Nauczyli się Państwo o zakresach znaków i zakresach niestandardowych:
- Po zakresach znaków i
Longmożna iterować tak jak po zakresachInt - Typy Comparable obsługują sprawdzanie przynależności za pomocą
.. - Typy niedyskretne obsługują sprawdzanie
in, ale nie można po nich iterować ..jest skrótem zapisurangeTo
To kończy kurs Zakresy i progresje.
Ucz się Kotlin dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 51
- Lekcje
- 203
Często zadawane pytania
Czy lekcja „Zakresy znaków i niestandardowe zakresy” jest bezpłatna?
Tak — pełny tekst „Zakresy znaków i niestandardowe zakresy” 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 Kotlin Academy, przejdź na CoddyKit PRO. Kurs Kotlin Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Zakresy znaków i niestandardowe zakresy”?
Wyjdź poza liczby całkowite Ćwiczysz Kotlin 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ąć Kotlin Academy?
Nie wymagamy żadnego doświadczenia. Kotlin 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 „Zakresy znaków i niestandardowe zakresy”?
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 Kotlin Academy?
Tak. Każda lekcja Kotlin 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
- Operatory zakresu
- step i downTo
- Zakresy w pętlach
- Zakresy znaków i niestandardowe zakresy