---
# System prepended metadata

title: 2020-04-20 | Kotlin | Fonctions d'extension
tags: [android, kotlin, gobelins]

---

# 2020-04-20 | Kotlin | Fonctions d'extension

###### tags: `kotlin` `android` `gobelins`

## To know

Utiliser mot clé "fun"
Ajouter le nom de classe d'extension : "Class.myFunction"

## Pro tips
alt + j => séléctionner toute les occurences

## Exemple
```
fun String.sayHello():String {
    val retour = "$this - Hello world"
    return retour
}

val part1 = "Bonjour"
println(part1.sayHello())
```
Retourne : 
```
Bonjour - Hello world
```

## Exercice
Créer une fonction d'extension sur une liste d'étudiants qui inversera le nom et le prenom de chaque etudiant de la liste.

```
etudiants.forEach {
    println(it.fullName())
}

// Fonctionne mais pas propre
/**fun Etudiant.switchNames() {
    var first = this.first
    var last = this.last

    this.first = last
    this.last = first

    println(this.fullName());
}*/

// Bien mais dans mon cas ne fonctionne pas....
fun Etudiant.switch() = copy(first = last, last = first)

// Sur une liste
fun List<Etudiant>.switch() = forEach { it.switch() }

etudiants.switch()
etudiants.forEach {
    println(it.fullName())
}
```