Char- und benutzerdefinierte Bereiche
Über Ganzzahlen hinaus
Char- und benutzerdefinierte Bereiche ist eine kostenlose Kotlin Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Kotlin Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.
Über Integer hinaus
Bereiche sind nicht nur für Int gedacht. Kotlin unterstützt auch Bereiche von Zeichen und anderen vergleichbaren Typen.
In dieser Lektion untersuchen Sie Char-Bereiche und wie benutzerdefinierte Typen sich mit rangeTo integrieren lassen.
Rückblick auf Char-Bereiche
Zeichen besitzen eine definierte Reihenfolge, daher ist 'a'..'z' ein gültiger Bereich.
Sie können ihn durchlaufen, die Zugehörigkeit prüfen und vieles mehr.
fun main() {
for (c in 'a'..'f') print(c)
println()
println('q' in 'a'..'z')
}Zeichen validieren
Char-Bereiche machen die Eingabevalidierung übersichtlich, etwa beim Prüfen auf Ziffern oder Buchstaben.
fun isDigit(c: Char): Boolean = c in '0'..'9'
fun main() {
println(isDigit('7'))
println(isDigit('x'))
}Buchstaben zählen
Sie können ein einfaches Alphabet erstellen, indem Sie einen Char-Bereich durchlaufen und die Werte sammeln.
fun main() {
val alphabet = ('a'..'z').toList()
println(alphabet.size)
println(alphabet.first())
println(alphabet.last())
}Long-Bereiche
Bereiche funktionieren auch mit Long und sind daher für große Zahlenbereiche nützlich.
Dieselben Operatoren gelten auch hier.
fun main() {
val big = 1L..5L
println(big.sum())
}Bereiche vergleichbarer Typen
Jeder Typ Comparable kann mit .. einen Bereich bilden. Solche Bereiche unterstützen jedoch nur Zugehörigkeitsprüfungen und keine Iteration.
Bereiche von String prüfen beispielsweise die lexikalische Reihenfolge.
fun main() {
val range = "apple".."mango"
println("cherry" in range)
println("zebra" in range)
}Warum manche Bereiche nicht durchlaufen werden können
Für eine Iteration ist eine definierte Schrittweite erforderlich. Integer und Zeichen besitzen eine solche, nämlich das Addieren von 1. Strings und Doubles haben jedoch keinen offensichtlichen nächsten Wert.
Daher unterstützen diese Bereiche in, aber keine for-Schleifen.
fun main() {
val r = 1.0..5.0
println(2.5 in r)
// for (x in r) // not allowed for Double
}Benutzerdefinierte Typen mit rangeTo
Der Operator .. ruft eine Funktion rangeTo auf. Wenn Ihre Klasse Comparable implementiert, erhalten Sie die Bereichszugehörigkeit automatisch.
Hier vergleicht eine einfache Versionsklasse numerisch.
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)
}Der Operator im Hintergrund
a..b zu schreiben ist dasselbe wie der Aufruf von a.rangeTo(b).
Die Operatorform ist lediglich eine angenehmere Syntax für dieselbe Funktion.
fun main() {
val r1 = 1..5
val r2 = 1.rangeTo(5)
println(r1.toList() == r2.toList())
}Den richtigen Bereich wählen
Eine kurze Orientierung:
- Zahlen und Zeichen → durchlaufen und Zugehörigkeit prüfen
- Doubles und benutzerdefinierte vergleichbare Typen → nur Zugehörigkeit prüfen
- Benötigen Sie eine Schrittweite? Verwenden Sie ganzzahlige oder Char-Progressionen
fun main() {
println('m' in 'a'..'z')
println(3.5 in 1.0..4.0)
println(50 in 1..100)
}Alles zusammenführen
Bereiche lassen sich auf viele Typen verallgemeinern:
- Char-Bereiche können durchlaufen und zur Validierung verwendet werden
Long-Bereiche verarbeiten große Wertebereiche- Comparable- und benutzerdefinierte Typen unterstützen die Zugehörigkeitsprüfung
..ist syntaktischer Zucker fürrangeTo
fun main() {
val vowels = "aeiou"
for (c in 'a'..'z') {
if (c in vowels) print(c)
}
println()
}Kurze Wissensprüfung
Testen Sie Ihr Verständnis von Char-Bereichen und benutzerdefinierten Bereichen.
Zusammenfassung
Sie haben Char-Bereiche und benutzerdefinierte Bereiche kennengelernt:
- Char- und
Long-Bereiche können wieInt-Bereiche durchlaufen werden - Comparable-Typen unterstützen die Zugehörigkeitsprüfung mit
.. - Nicht-diskrete Typen unterstützen
in, können aber nicht in Schleifen durchlaufen werden ..ist eine Kurzform fürrangeTo
Damit ist der Kurs Ranges and Progressions abgeschlossen.
Lerne Kotlin mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 51
- Lektionen
- 203
Häufig gestellte Fragen
Ist die Lektion „Char- und benutzerdefinierte Bereiche“ kostenlos?
Ja — der vollständige Text von „Char- und benutzerdefinierte Bereiche“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Kotlin Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Char- und benutzerdefinierte Bereiche“?
Über Ganzzahlen hinaus Du übst Kotlin Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Kotlin Academy zu starten?
Keine Vorkenntnisse erforderlich. Kotlin Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Char- und benutzerdefinierte Bereiche“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Kotlin Academy-Lektion Code schreiben und ausführen?
Ja. Jede Kotlin Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Bereichsoperatoren
- step und downTo
- Bereiche in Schleifen
- Char- und benutzerdefinierte Bereiche