[Kotlin01] Extension Functions
Helena Strada
Tópicos que você verá nesse post
- Extension Functions no Kotlin
Contexto
No dia-a-dia, você pode se deparar com tarefas que se repetem no seu código e que poderiam estar centralizadas em um local para serem reutilizadas.
Por exemplo, você precisa remover os acentos de palavras.
input: áéíóú_àèìòù_ãõ
output: aeiou_aeiou_ao
Extension Functions
Assim como no C# onde chamamos de extension methods, no Kotlin temos a funcionalidade de adicionar o mesmo recurso de extensão a tipos chamando de extension functions.
Isso facilita o processo de alteração a partir do momento em que essa função precisa ser reescrita, não precisamos alterar a lógica em todos os lugares em que o chamam, mas somente no método de extensão.
Isso facilita também o processo de construção dos testes dado que a partir do momento em que essa estrutura sofrer alguma alteração, os testes irão falhar.
import java.text.Normalizer
fun main() {
val wordWithAccent = "áéíóú_ãõ_àèìòù"
println(wordWithAccent.unaccented())
}
// remover acentos
fun String.unaccented(): String {
val regex = Regex("[^\\p{ASCII}]")
return Normalizer
.normalize(this, Normalizer.Form.NFD)
.replace(regex, String())
}