Kotlin von Anfang an Nichtigkeit, Schleifen und Bedingungen

Kotlin ist eine moderne Programmiersprache, die Java-Bytecode kompiliert. Es ist kostenlos und Open Source und verspricht, die Kodierung für Android noch mehr Spaß zu machen.  

Im vorigen Artikel haben Sie sich mit Variablen, einfachen Typen, Arrays, Kommentaren und Typinferenz in Kotlin vertraut gemacht. In diesem Lernprogramm lernen wir die Sprache weiter, indem wir die Nullfähigkeit, die Schleifen und die Bedingungen in Kotlin betrachten.

1. Nichtigkeit

Wenn Sie ein Android-Programmierer sind, müssen Sie auf das Infame gestoßen sein NullPointerException Fehler in Ihrer App. Diese treten immer dann auf, wenn Sie versuchen, eine Methode aufzurufen oder eine Eigenschaft einer Objektreferenz zu lesen Null

Die gute Nachricht ist, dass Kotlin uns helfen kann, diese Art von Fehlern zu vermeiden, da es sich um eine sichere Sprache handelt. Das bedeutet, dass Variablen nicht den Wert null haben können, wenn Sie ihren Typ nicht explizit als nullfähig deklarieren. Mit anderen Worten, Typen können standardmäßig nicht null sein. Mal sehen, wie wir mit dieser Funktion von Kotlin Fehler in unserem Code vermeiden können. 

Wertname: String = null // wird nicht kompiliert

Wie Sie oben sehen können, wenn wir vergeben Null zum Name Variable, beschwert sich der Compiler. Damit der Compiler die Zuweisung zulässt, deklarieren Sie den Namen durch Hinzufügen als Nullwert ? nach dem Typ.

Wertname: String? = null // kompiliert name = "Chike" // neuer Wert ist "Chike"

Beachten Sie, dass wenn ? Wird nach einem beliebigen Typnamen eingefügt, haben wir den Compiler explizit angewiesen, dass der Wert des Typs entweder eine Objektreferenz speichern kann oder sein kann Null-es ist nullfähig. Hier haben wir das mit gemacht String Typ, aber es funktioniert genauso mit Int?, Byte?Lange?, Meine Klasse?, und so weiter. 

Der Safe Call Operator: ?.

Erfahren Sie mehr über die Funktionsweise von null-safety in Kotlin mit einem Operator namens Safe Call Operator ?..

var name: String? = null print (name.length) // wird nicht kompiliert

Der obige Code wird nicht kompiliert, da Kotlin eine nullsichere Sprache ist. Die Variable Name wird der Wert zugewiesen Null. Nun wird die Eigenschaft aufgerufen Länge auf diese Variable würde ein auslösen NullPointerException Fehler in Java. Der Kotlin-Compiler lässt jedoch den Aufruf dieser Eigenschaft nicht zu, da die Variable dies sein könnte Null. Der Compiler erlaubt uns nicht, etwas zu tun, das eine generieren könnte NullPointerException!

val v: String? = null print (v? .length) // kompiliert und druckt "null"

Jetzt fügen Sie den Operator für sichere Anrufe hinzu ?. Auf die Variable vor dem Aufrufen der Eigenschaft haben wir den Compiler explizit angewiesen, die Eigenschaft nur dann aufzurufen, wenn der Wert nicht ist Null. Wenn der Wert ist Null, Der Compiler verwendet den String "Null" als Wert für uns. Dies funktioniert auch für Methoden und nicht nur für Eigenschaften. 

Wenn Sie eine Methode mit Nullwert aufrufen, ist der Rückgabetyp ebenfalls Nullwert. So zum Beispiel der Rückgabetyp von v & lgr; Ausdruck wann v ist nullfähig wird sein Int?

val v: String? = null val len: Int? = v? .length print (len) // kompiliert und druckt "null"

Um die Nullfähigkeitsprüfung durch den Kotlin-Compiler zu umgehen, können Sie das ersetzen ?. Betreiber mit !!.. Dies wird jedoch aufgrund der hohen Wahrscheinlichkeit nicht empfohlen NullPointerException Fehler, falls verwendet.  

val v: String? = null val len: Int? = v !!. length print (len) // löst einen NullPointerException-Fehler aus

Der Elvis Operator: ?:

Dieser Operator ?: wird als Elvis-Operator bezeichnet (weil seine Form wie der Kopf von Elvis aussieht). Es wird verwendet, um einen alternativen Wert für die Variable anzugeben, falls dies der Fall ist Null.  

val username = null val name: String = Benutzername?: "No name" print (name) // kompiliert und druckt "No name"

Hier hat der Compiler die Zeichenfolge zugewiesen "Kein Name" auf die Variable Name, weil der erste Wert Benutzername ist Null. Wenn der erste Wert nicht war Null, dann würde dieser Wert stattdessen der Variablen zugewiesen.

2. Schleifen

Kotlin hat while, do-while und für Loops. 

Das während Schleife

Mit einer Wiederholungsanweisung können wir angeben, dass der Code eine Aktion wiederholen soll, während eine Bedingung erfüllt bleibt.

Also in Kotlin mit der während Schleife ist die gleiche wie in anderen Sprachen wie Java.

while (Bedingung) // Code hier ausführen while (Kraftstoff> 5) driveMeAroundLagos ()

Solange die Bedingung erfüllt ist, wird der Code innerhalb der geschweiften Klammern oder des Körpers der Schleife ausgeführt. Wenn die Bedingung falsch ist, wird der Code nicht ausgeführt. In unserem obigen Beispiel wird die Bedingung falsch, sobald die Kraftstoffvariable weniger als 5 Liter beträgt, und die Schleife wird beendet. Mit anderen Worten, driveMeAroundLagos () Die Ausführung der Methode wird angehalten. 

Das mache… während Schleife

Kotlin hat auch die mache… während Schleifenkonstrukt. 

do // Code hier ausführen while (Bedingung)

Das ist ähnlich dem während Aussage. In der while-Schleife testet das Programm die Schleifenbedingung am Anfang der Schleife, bevor der Körper der Schleife ausgeführt wird. Wenn die Bedingung falsch ist, wird der Rumpf nicht ausgeführt. Aber die mache es loop testet die Bedingung, nachdem der Körper der Schleife ausgeführt wurde. Das bedeutet, dass der Körper mindestens einmal ausgeführt wird.

Das zum Schleife

EIN zum Schleife ist eine Wiederholungsanweisung, die es uns ermöglicht, Objekte zu durchlaufen, während eine bestimmte Bedingung erfüllt ist.

for (Wert im Bereich) // Code ausführen 

In Kotlin die zum Das Schleifenkonstrukt arbeitet mit einer Iteration über Bereiche, Sammlungen oder andere iterierbare Elemente (mehr dazu im nächsten Post). Für Loops arbeiten Sie mit der im Operator, der verwendet wird, um festzustellen, ob ein Wert in einem bestimmten Bereich vorhanden ist.

für (a in 1… 5) print ("$ a") // wird gedruckt 1 2 3 4 5

Im obigen Code durchlaufen wir einen geschlossenen Bereich von 1 bis 5 und drucken jeden Wert in diesem Bereich aus. 

Iteration über ein Index-Array

Wir können die verwenden withIndex () Funktion oder die Indizes Eigenschaft eines Arrays zur Wiederholung eines Arrays, in dem der Index für jedes Element benötigt wird.

Verwendung der withIndex () Funktion

Wir können über ein Array iterieren, um auf den Index jedes Elements zuzugreifen, indem Sie den withIndex () Funktion auf dem Array, weil die withIndex () Funktion gibt eine Iteration von zurück Indexwert Typ für jedes Element. Auf diese Weise können wir von jedem Element auf den Index und den Wert für jedes Element zugreifen.

val numbersArray = intArrayOf (1,2,3,4,5) für ((Index, Wert) in numbersArray.withIndex ()) print ("$ index index value ist $ value \ n")

Der obige Code gibt das Ergebnis unten aus:

0 Indexwert ist 1 1 Indexwert ist 2 2 Indexwert ist 3 3 Indexwert ist 4 4 Indexwert ist 5

Verwendung der Indizes Eigentum

Darüber hinaus können wir die verwenden Indizes Eigenschaft auf dem Array. Dadurch wird nur der Bereich gültiger Indizes für das Array zurückgegeben.

val numbers1 = intArrayOf (1,2,3,4,5) für (Index in Numbers1.indices) print ("$ index index value ist $ numbers1 [index] \ n")

Der obige Code liefert das gleiche Ergebnis wie im vorherigen Beispiel. Sie können hier auch sehen, dass wir den Index verwenden können, um auf ein Array-Element zuzugreifen, ähnlich wie andere Programmiersprachen wie Java.

3. Bedingungen

Kotlin hat drei Arten von Bedingungsanweisungen: die ob, ansonsten, und wann Aussagen. 

Das ob Aussage

Ein ob Anweisung führt Code aus, wenn eine Bedingung wahr ist, oder überspringt sie einfach, wenn die Bedingung falsch ist. Nichts Besonderes hier: ob Anweisungen funktionieren ähnlich wie in den meisten anderen Programmiersprachen, einschließlich Java. 

val number = 20 if (number% 2 == 0) print ("$ number ist durch 2 teilbar") // 20 ist durch 2 teilbar

Wir können auch überprüfen, ob eine Variable von einem bestimmten Typ ist ist Stichwort. 

if (number ist Int) print ("$ number ist eine ganze Zahl") 

Das ansonsten Aussage

Das ansonsten führt eine Aktion aus, wenn die Bedingung wahr ist, und führt eine andere Aktion aus, wenn die Bedingung falsch ist.

val number = 13 if (number% 2 == 0) print ("$ number ist teilbar durch 2") else print ("$ number ist nicht teilbar durch 2") // 13 ist nicht teilbar durch 2

Ein Hauptmerkmal, das das unterscheidet ansonsten Eine Anweisung in Kotlin aus anderen Programmiersprachen wie Java ist die Möglichkeit, eine Variable aus dem zurückgegebenen Wert von zuzuweisen  ansonsten Aussage. Dies ist möglich weil ein ansonsten Anweisung kann nicht nur als Anweisung, sondern auch als Ausdruck in Kotlin verwendet werden.

val number = 13 val result = if (number% 2 == 0) "$ number ist teilbar durch 2" else "$ number ist nicht teilbar durch 2" print (result) // 13 ist nicht teilbar durch 2

Im obigen Code haben wir die Ergebnis Variable mit einem String Objekt basierend auf dem Zustand des ansonsten Aussage. Beachten Sie, dass dies nur die letzte Anweisung in einem bestimmten Bedingungsblock zurückgibt und dass Sie auch keine verwenden können ob ohne ein sonst als Ausdruck. 

val result = if (number% 2 == 0) "Teilbar durch 2" "Nummer ist $ number" // Nur diese Zeichenfolge wird zurückgegeben, wenn sie ausgeführt wird else "Nicht teilbar durch 2" "Number ist $ number"

Das wann Ausdruck

Kotlin stellte das vor wann konstruiere als ersatz für das vertraute Schalter Anweisung haben wir in verschiedenen Programmiersprachen wie C ++, Java und so weiter. wann ist prägnanter und verfügt über leistungsfähigere Funktionen als das Schalter Aussage, mit der Sie vielleicht vertraut sind. 

Das wann Die Anweisung führt verschiedene Aktionen basierend auf den möglichen Werten einer Konstante des Typs aus Int, String, Byte, Kurz, oder irgendein anderes Objekt. 

fun guessTheNumber (number: Int) wenn (number) 1 -> println ("number is 1") 2 -> println ("number is 2") 3 -> println ("number is 3") else -> println ("Zahl ist weder 1, 2 oder 3")

Im obigen Code haben wir die Funktion übergeben rateTheNumber () ein Zahlenparameter (wir werden Funktionen in Kotlin in einem späteren Beitrag besprechen). Das wann Der Ausdruck prüft dann, ob einer der Zweige mit dem Wert von übereinstimmt Nummer und führt dann die Aktion in diesem Zweig aus. Wenn keine der Niederlassungen übereinstimmt, wird die sonst Verzweigung wird ausgeführt. 

Eine andere Variante der wann Ausdruck erfordert kein Argument, wie im folgenden Beispiel.

fun guessTheNumber (number: Int) wenn number == 1 -> println ("number is 1") number == 2 -> println ("number is 2") number == 3 -> println ("number is 3.) ") else -> println (" Zahl ist weder 1, 2 noch 3 ")

Wenn wir mehr als eine Aktion für einen Zweig ausführen möchten, müssen wir die Aktionen in geschweifte Klammern einschließen .

val number = 2 when (number) 1 -> println ("number is 1") 2 -> // Block des ausgeführten Codes println ("number is 2") println ("es ist eine gerade Zahl") 3 -> println ("Nummer ist 3")

Darüber hinaus können wir Testwerte in einem Zweig zusammenfassen.

val number = 2 when (number) 1, 2 -> println ("number ist entweder 1 oder 2") // number ist entweder 1 oder 2 3 -> println ("number is 3")

Hier wird der erste Zweig ausgeführt, weil wir entweder einen Wert von 1 oder 2 testen.

Fazit

In diesem Lernprogramm haben Sie die Nullfähigkeit, Schleifen und Bedingungen in der Programmiersprache Kotlin kennen gelernt. Im nächsten Tutorial der Kotlin From Scratch-Serie erfahren Sie mehr über die APIs für Bereiche und Sammlungen in Kotlin. Bis bald!

Um mehr über die Kotlin-Sprache zu lernen, empfehle ich die Kotlin-Dokumentation. Oder sehen Sie sich einige unserer anderen Kotlin-Tutorials hier bei Envato Tuts an+!