Kotlin – Funções Estendidas

Kotlin – Funções Estendidas

14 de maio de 2019 1 Por Ramos de Souza Janones

Funções estendidas do Kotlin oferecem a capacidade de aumentar uma classe com uma nova funcionalidade sem precisar estendê-la diretamente.

Isso é feito por meio de declarações especiais chamadas extensões, também chamadas de  Extension Functions no Kotlin .

Você pode adicionar comportamentos a uma classe sem estendê-la diretamente. Através de uma função de extensão, você pode chamar uma função de um objeto como se fosse parte de sua classe.

Poderíamos criar uma função de extensão para String chamada novaFuncao e chamá-la de minhaString.novaFuncao(). Como sabemos, novaFuncao não é uma função de String, mas sintaticamente ela é.

Então, como isso funciona? Você só precisa adicionar a função a classe String conforme exemplo abaixo:

Recomendamos a leitura:
- 14 Hábitos de Desenvolvedores Altamente Produtivos eBook Kindle
- Cupom de R$ 100 off no Smartphone Positivo Q20 - Válido somente até 1 de Maio de 2021.

- Seleção de Equipamentos para Streaming
StringExtensions.kt
fun String.novaFuncao(): String {
    // implementacao
}

Aprofundando em Extesion Function 

Você as escreve como funções normais e ela funciona como se fosse uma função do tipo, ou seja, como se fosse um método que aquele tipo possui.

Vai gostar: Motivos para trocar o Java pelo Kotlin ainda hoje | Movile

this pode ser usado como em um método normal para acessar o objeto que está sendo manipulado. Mas há limitações do que pode acessar nele. Apenas membros públicos podem ser acessados já que a função é externa e não tem privilégios de acesso extras.

Conforme a documentação se quiser fazer um método que possa ser usado em qualquer MutableList de um Int que troque dados de dois índices faria assim:

fun MutableList<Int>.swap(index1: Int, index2: Int) {
    val tmp = this[index1] // 'this' corresponds to the list
    this[index1] = this[index2]
    this[index2] = tmp
}

Assim poderia ser usado desta forma:

val l = mutableListOf(1, 2, 3)
l.swap(, 2)

Se Kotlin tivesse métodos estáticos normais (ela tem objetos de companhia que é essencialmente a mesma coisa) seria o mesmo que chamar

MutableList<Int>.swap(l, , 2)

neste caso o l seria passado como argumento para a função e este parâmetro seria acessado com this.

Leia também: Release do livro: Desenvolvedor Kotlin Android – Bibliotecas para o dia a dia

Você está nas seções:  MundoJS » Kotlin

 

LEIA TAMBÉM:  Resenha do livro: Como meu jogo alcançou 3 Milhões de Downloads?

 

votes
Article Rating