Das in Schlüsselwort
Das
inSchlüsselwort prüft, ob ein Wert innerhalb eines Bereichs liegt.
// InKeyword/MembershipInRange.kt
fun main() {
val percent = 35
println(percent in 1..100)
}
/* Output:
true
*/
In Booleans haben Sie gelernt, Grenzen explizit zu überprüfen:
// InKeyword/MembershipUsingBounds.kt
fun main() {
val percent = 35
println(0 <= percent && percent <= 100)
}
/* Output:
true
*/
0 <= x && x <= 100 ist logisch gleichwertig zu x in 0..100. IntelliJ IDEA
schlägt vor, die erste Form automatisch durch die zweite zu ersetzen, da diese
einfacher zu lesen und zu verstehen ist.
Das Schlüsselwort in wird sowohl für Iteration als auch für Mitgliedschaft verwendet. Ein in innerhalb des Steuerungsausdrucks einer for-Schleife bedeutet Iteration, andernfalls prüft in die Mitgliedschaft:
// InKeyword/IterationVsMembership.kt
fun main() {
val values = 1..3
for (v in values) {
println("iteration $v")
}
val v = 2
if (v in values)
println("$v is a member of $values")
}
/* Output:
iteration 1
iteration 2
iteration 3
2 is a member of 1..3
*/
Das in Schlüsselwort ist nicht nur auf Bereiche beschränkt. Sie können auch überprüfen, ob ein Zeichen Teil eines String ist. Das folgende Beispiel verwendet in anstelle von hasChar() aus dem vorherigen Atom:
// InKeyword/InString.kt
fun main() {
println('t' in "kotlin")
println('a' in "kotlin")
}
/* Output:
true
false
*/
Später im Buch wirst du sehen, dass in auch mit anderen Typen funktioniert.
Hier prüft in, ob ein Zeichen zu einem Bereich von Zeichen gehört:
// InKeyword/CharRange.kt
fun isDigit(ch: Char) = ch in '0'..'9'
fun notDigit(ch: Char) =
ch !in '0'..'9' // [1]
fun main() {
println(isDigit('a'))
println(isDigit('5'))
println(notDigit('z'))
}
/* Output:
false
true
true
*/
-
[1]
!inprüft, dass ein Wert nicht zu einem Bereich gehört.
Sie können einen Double-Bereich erstellen, aber Sie können ihn nur verwenden, um die Zugehörigkeit zu überprüfen:
// InKeyword/FloatingPointRange.kt
fun inFloatRange(n: Double) {
val r = 1.0..10.0
println("$n in $r? ${n in r}")
}
fun main() {
inFloatRange(0.999999)
inFloatRange(5.0)
inFloatRange(10.0)
inFloatRange(10.0000001)
}
/* Output:
0.999999 in 1.0..10.0? false
5.0 in 1.0..10.0? true
10.0 in 1.0..10.0? true
10.0000001 in 1.0..10.0? false
*/
Sie können nur .. verwenden, um einen Gleitkomma-Bereich in Kotlin zu definieren.
Sie können überprüfen, ob ein String ein Mitglied eines Bereichs von Strings ist:
// InKeyword/StringRange.kt
fun main() {
println("ab" in "aa".."az")
println("ba" in "aa".."az")
}
/* Output:
true
false
*/
Hier verwendet Kotlin den alphabetischen Vergleich.
Übungen und Lösungen finden Sie unter www.AtomicKotlin.com.