Abo
  • Services:
Anzeige
Kotlin ist ein Leuchtturmprojekt für die Android-Entwicklung.
Kotlin ist ein Leuchtturmprojekt für die Android-Entwicklung. (Bild: Jetbrains/Apache License 2.0)

Funktional und voll unter Kontrolle

Kotlin ermöglicht funktionale Programmierung und orientiert sich in Teilen auch an diesem Konzept. Eine neue Funktion wird mit fun definiert, gefolgt vom Namen der Funktion, den Argumenten in Klammern sowie dem Typ des Rückgabewertes nach einem Doppelpunkt.

  1. // Berechnet den größten gemeinsamen Teiler
  2. fun ggt(x: Int = 0, y: Int = 0): Int {
  3. var a: Int = x
  4. var b: Int = y
  5.  
  6. while (b != 0) {
  7. if (a > b) {
  8. a = a - b
  9. } else {
  10. b = b - a;
  11. }
  12. }
  13.  
  14. println("Der ggT von $x und $y ist $a.")
  15. return a;
  16. }

Anzeige

Die Funktion ggt() erwartet zwei Argumente, die dann im Rumpf in den Variablen x und y bereitstehen. Der Typ einer Variablen steht ähnlich wie in Pascal hinter dem Doppelpunkt. Beim ggt() nehmen x und y 32 Bit große Ganzzahlen auf (Int). Optional können Entwickler hier Standardwerte vorgeben, im Beispiel erhalten x und y eben den Wert 0. Beim Aufruf einer Funktion darf man zudem festlegen, welcher Parameter welchen Wert erhält: ggt(b = 3). Auch die primitiven Datentypen wie Int sind in Kotlin vollwertige Objekte.

Die Funktion ggt() liefert eine Ganzzahl zurück. Gibt man keinen Rückgabetyp an, liefert die Funktion automatisch den Wert Unit vom Typ Unit zurück. Dies korrespondiert mit dem Typ void in Java. Besteht der Funktionsrumpf aus einem einzigen Ausdruck, kann man eine Kurzschreibweise nutzen: fun doppel(a: Int) = a + a.

Variablen definiert man mit var, Konstanten mit val. In Kotlin gilt die Konvention, möglichst immer alle genutzten Variablen auch tatsächlich als var zu definieren. Das betrifft auch die übergebenen Parameter, die der Rumpf von ggt() daher für die Berechnung in die Variablen a und b kopiert. Sofern man die Typen nicht angibt, versucht der Compiler, diese während der Übersetzung automatisch abzuleiten. Variableninhalte lassen sich zudem in Zeichenketten einsetzen, indem man den Variablennamen im Text ein $ voranstellt.

Unter Kontrolle

Ergänzend zu der etwa aus C oder eben Java altbekannten Anweisung if kennt Kotlin when, das dem switch-Konstrukt aus anderen Sprachen ähnelt. Wie im folgenden Beispiel vergleicht es den Inhalt oder den Typ einer Variablen nacheinander mit Vorgaben:

  1. fun wasist(obj): String = when (obj) {
  2. 1 -> "Eins"
  3. "Hallo" -> "Ein String mit dem Inhalt Hallo"
  4. is Int -> "Eine Zahl"
  5. else -> "unbekannt"
  6. }

Der Operator .. erzeugt eine Zahlenfolge, die man etwa in einer for-Schleife durchlaufen kann. Das folgende Beispiel addiert alle Zahlen von 1 bis 100:

  1. var x: Int = 0
  2. for (i in 1..100) {
  3. x = x + i
  4. }

 Programmiersprache für Android: Kotlin ist auch nur eine InselKlassen mit zwei Konstruktoren und Properties 

eye home zur Startseite
Proctrap 29. Okt 2017

immer diese Threadschändung

Themenstart

MiBx 18. Okt 2017

Das ist schon ganz gut so, dass Du zurück gewechselt bist, wenn Du Dich nicht wirklich...

Themenstart

horotab 05. Okt 2017

Wer Methoden schreibt, die so lang sind, mach idR sowieso etwas falsch. Im Idealfall hat...

Themenstart

demonkoryu 04. Okt 2017

Closures sind nicht "hip" sondern eine nützliche Abstraktion, die in den letzten Jahren...

Themenstart

Kommentieren



Anzeige

Stellenmarkt
  1. echion Corporate Communication AG, Augsburg
  2. Automotive Safety Technologies GmbH, Ingolstadt
  3. Hochschule Esslingen - University of Applied Sciences, Esslingen
  4. Bechtle GmbH IT-Systemhaus, Nürtingen


Anzeige
Blu-ray-Angebote
  1. 299,99€ (Vorbesteller-Preisgarantie)
  2. 79,98€ (Vorbesteller-Preisgarantie)

Folgen Sie uns
       


  1. Rigiet

    Smartphone-Gimbal soll Kameras für wenig Geld stabilisieren

  2. Tele Columbus

    1 GBit würden "gegenwärtig nur die Nerds buchen"

  3. Systemkamera

    Leica CL verbindet Retro-Design mit neuester Technik

  4. Android

    Google bekommt Standortdaten auch ohne GPS-Aktivierung

  5. Kabelnetz

    Primacom darf Kundendaten nicht weitergeben

  6. SX-10 Aurora Tsubasa

    NECs Beschleuniger nutzt sechs HBM2-Stacks

  7. Virtual Reality

    Huawei und TPCast wollen VR mit 5G streamen

  8. Wayland-Desktop

    Nvidia bittet um Mitarbeit an Linux-Speicher-API

  9. Kabelnetz

    Vodafone liefert Kabelradio-Receiver mit Analogabschaltung

  10. Einigung erzielt

    EU verbietet Geoblocking im Online-Handel



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Gaming-Smartphone im Test: Man muss kein Gamer sein, um das Razer Phone zu mögen
Gaming-Smartphone im Test
Man muss kein Gamer sein, um das Razer Phone zu mögen
  1. Razer Phone im Hands on Razers 120-Hertz-Smartphone für Gamer kostet 750 Euro
  2. Kiyo und Seiren X Razer bringt Ringlicht-Webcam für Streamer
  3. Razer-CEO Tan Gaming-Gerät für mobile Spiele soll noch dieses Jahr kommen

Firefox 57: Viel mehr als nur ein Quäntchen schneller
Firefox 57
Viel mehr als nur ein Quäntchen schneller
  1. Mozilla Wenn Experimente besser sind als Produkte
  2. Firefox 57 Firebug wird nicht mehr weiterentwickelt
  3. Mozilla Firefox 56 macht Hintergrund-Tabs stumm

Windows 10 Version 1709 im Kurztest: Ein bisschen Kontaktpflege
Windows 10 Version 1709 im Kurztest
Ein bisschen Kontaktpflege
  1. Windows 10 Microsoft stellt Sicherheitsrichtlinien für Windows-PCs auf
  2. Fall Creators Update Microsoft will neues Windows 10 schneller verteilen
  3. Windows 10 Microsoft verteilt Fall Creators Update

  1. Re: Ist doch alles "kostenlos"

    raskani | 08:08

  2. Re: Diesen Test können wir leider nicht durchführen.

    KingTobi | 08:08

  3. Re: VR ist tot

    Dwalinn | 08:07

  4. Re: Überlebenschance

    chefin | 08:07

  5. Re: zum glück kann ich mir meine kunden noch...

    Die-leise-Stimme | 08:06


  1. 07:38

  2. 20:00

  3. 18:28

  4. 18:19

  5. 17:51

  6. 16:55

  7. 16:06

  8. 15:51


  1. Themen
  2. A
  3. B
  4. C
  5. D
  6. E
  7. F
  8. G
  9. H
  10. I
  11. J
  12. K
  13. L
  14. M
  15. N
  16. O
  17. P
  18. Q
  19. R
  20. S
  21. T
  22. U
  23. V
  24. W
  25. X
  26. Y
  27. Z
  28. #
 
    •  / 
    Zum Artikel