if-Ausdrücke
Ein
if-Ausdruck trifft eine Entscheidung.
Das if-Schlüsselwort prüft einen Ausdruck, um festzustellen, ob er wahr oder falsch ist, und führt basierend auf dem Ergebnis eine Aktion aus. Ein Wahr-oder-Falsch-Ausdruck wird als Boolean bezeichnet, nach dem Mathematiker George Boole, der die Logik hinter diesen Ausdrücken erfunden hat. Hier ist ein Beispiel mit den Symbolen > (größer als) und < (kleiner als):
// IfExpressions/If1.kt
fun main() {
if (1 > 0)
println("It's true!")
if (10 < 11) {
println("10 < 11")
println("ten is less than eleven")
}
}
/* Output:
It's true!
10 < 11
ten is less than eleven
*/
Der Ausdruck in den Klammern nach dem if muss zu true oder false ausgewertet werden. Wenn true, wird der folgende Ausdruck ausgeführt. Um mehrere Zeilen auszuführen, platziere sie in geschweiften Klammern.
Wir können einen booleschen Ausdruck an einer Stelle erstellen und an einer anderen verwenden:
// IfExpressions/If2.kt
fun main() {
val x: Boolean = 1 >= 1
if (x)
println("It's true!")
}
/* Output:
It's true!
*/
Da x ein Boolean ist, kann der if-Operator es direkt testen, indem er if(x) sagt.
Der >=-Operator für Boolean gibt true zurück, wenn der Ausdruck auf der linken Seite des Operators größer oder gleich dem auf der rechten Seite ist. Ebenso gibt <= true zurück, wenn der Ausdruck auf der linken Seite kleiner oder gleich dem auf der rechten Seite ist.
Das Schlüsselwort else ermöglicht es Ihnen, sowohl true- als auch false-Pfade zu behandeln:
// IfExpressions/If3.kt
fun main() {
val n: Int = -11
if (n > 0)
println("It's positive")
else
println("It's negative or zero")
}
/* Output:
It's negative or zero
*/
Das else-Schlüsselwort wird nur in Verbindung mit if verwendet. Sie sind nicht auf eine einzelne Prüfung beschränkt — Sie können mehrere Kombinationen testen, indem Sie else und if kombinieren:
// IfExpressions/If4.kt
fun main() {
val n: Int = -11
if (n > 0)
println("It's positive")
else if (n == 0)
println("It's zero")
else
println("It's negative")
}
/* Output:
It's negative
*/
Hier verwenden wir ==, um zwei Zahlen auf Gleichheit zu prüfen. != testet auf Ungleichheit.
Das typische Muster beginnt mit if, gefolgt von so vielen else if-Klauseln, wie Sie benötigen, und endet mit einem abschließenden else für alles, was nicht zu den vorherigen Tests passt. Wenn ein if-Ausdruck eine bestimmte Größe und Komplexität erreicht, verwenden Sie wahrscheinlich stattdessen einen when-Ausdruck. when wird später im Buch beschrieben, in „when“ Ausdrücke.
Der „Nicht“-Operator ! testet das Gegenteil eines Booleschen Ausdrucks:
// IfExpressions/If5.kt
fun main() {
val y: Boolean = false
if (!y)
println("!y is true")
}
/* Output:
!y is true
*/
Um if(!y) zu verbalisieren, sagt man “wenn nicht y.”
Das gesamte if ist ein Ausdruck, der ein Ergebnis liefern kann:
// IfExpressions/If6.kt
fun main() {
val num = 10
val result = if (num > 100) 4 else 42
println(result)
}
/* Output:
42
*/
Hier speichern wir den Wert, der durch den gesamten if Ausdruck erzeugt wird, in einem Zwischenbezeichner namens result. Wenn die Bedingung erfüllt ist, erzeugt der erste Zweig result. Wenn nicht, wird der else Wert zu result.
Lassen Sie uns üben, Funktionen zu erstellen. Hier ist eine, die einen Booleschen Parameter nimmt:
// IfExpressions/TrueOrFalse.kt
fun trueOrFalse(exp: Boolean): String {
if (exp)
return "It's true!" // [1]
return "It's false" // [2]
}
fun main() {
val b = 1
println(trueOrFalse(b < 3))
println(trueOrFalse(b >= 3))
}
/* Output:
It's true!
It's false
*/
Der Boolean-Parameter exp wird an die Funktion trueOrFalse() übergeben. Wenn das Argument als Ausdruck übergeben wird, wie b < 3, wird dieser Ausdruck zuerst ausgewertet und das Ergebnis an die Funktion übergeben. trueOrFalse() testet exp und wenn das Ergebnis true ist, wird Zeile [1] ausgeführt, andernfalls wird Zeile [2] ausgeführt.
-
[1]
returnsagt: “Verlasse die Funktion und liefere diesen Wert als Ergebnis der Funktion.” Beachten Sie, dassreturnüberall in einer Funktion erscheinen kann und nicht am Ende stehen muss.
Anstatt return wie im vorherigen Beispiel zu verwenden, können Sie das else-Schlüsselwort verwenden, um das Ergebnis als Ausdruck zu erzeugen:
// IfExpressions/OneOrTheOther.kt
fun oneOrTheOther(exp: Boolean): String =
if (exp)
"True!" // No 'return' necessary
else
"False"
fun main() {
val x = 1
println(oneOrTheOther(x == 1))
println(oneOrTheOther(x == 2))
}
/* Output:
True!
False
*/
Anstelle von zwei Ausdrücken in trueOrFalse() ist oneOrTheOther() ein einzelner Ausdruck. Das Ergebnis dieses Ausdrucks ist das Ergebnis der Funktion, sodass der if-Ausdruck zum Funktionskörper wird.
Übungen und Lösungen finden Sie auf www.AtomicKotlin.com.