Skip to content

Latest commit

 

History

History
119 lines (82 loc) · 2.31 KB

13-kotlin.asc

File metadata and controls

119 lines (82 loc) · 2.31 KB

Android

Un petit aperçu

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)

Quel est l’intérêt ?

  • 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

Anko

Un DSL pour remplacer les layouts.

verticalLayout {
	val name = editText()
	button("Say hi!") {
		onClick { toast("Hello, ${name.text}") }
	}
}

Functions

  • 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

Structures conditionnelles

  • 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"
}

Variables

  • 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

Classes, constructeur, properties…​

Ranges, boucles

Exceptions

La gestion du null

Force la vérification Null et Java (annotations, type non inférable)

Extension functions

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

Sealed classes

Références