data class Person(val name: String, val age: Int? = null)
fun main(args: Array<String>) {
val persons = listOf(Person("Alice), Person("Bob", age = 29))
val oldest = persons.maxBy { it.age ?: 0 }
println("The oldest is: $oldest")
}
//The oldest is: Person(name=Bob, age=29)
-
Un language pragmatique, concis et moderne.
-
Server-side, Android, partout où on trouve du Java.
-
Complètement interopérable avec Java.
-
Qui compile en bytecode Java 6.
-
Fortement typé statiquement, avec support des nullables
-
A la fois fonctionnel et orienté objet:
-
fonctions de premier ordre
-
immutabilité
-
pas d’effets de bord
-
-
Open Source
Un DSL pour remplacer les layouts.
verticalLayout {
val name = editText()
button("Say hi!") {
onClick { toast("Hello, ${name.text}") }
}
}
-
Classique
fun nom(param1: TypeParam1, param2: String? = "def"): TypeRetour { //Code de la fonction return x }
-
Inline
fun sum(a: Int, b: Int): Int = a + b
-
Tout est une expression
val result = if (condition) 1 else 2
return when (variable) {
is 1 -> "un"
is 2 -> "deux"
42 < 12 -> "The answer"
else -> "trop"
}
-
On déclare le type après car souvent inféré par le compilateur (pas nécessaire donc)
-
val / var
Caution
|
C’est la référence qu’on ne peut pas bouger, pas son contenu |
Important
|
LA KILLER FEATURE de Kotlin |
Permet de rajouter des méthodes après coup sur des classes existantes.
fun String.lastChar(): Char = this.get(this.length - 1)
"Hello".lastChar
-
Mooc Coursera par les créateurs du language : https://www.coursera.org/learn/kotlin-for-java-developers
-
Les Koans Kotlin : https://kotlinlang.org/docs/tutorials/koans.html
-
Le livre de référence : Kotlin in Action