Sobes.tech
Junior — Middle

Podes explicar o conceito de funções inline em Kotlin e suas vantagens?

sobes.tech IA

Resposta da IA

Em Kotlin, a palavra-chave inline é usada para funções, de modo que o compilador, durante a compilação, insira o corpo da função diretamente nos locais onde ela é chamada, em vez de uma chamada normal por referência. Isto é especialmente útil para funções de ordem superior que aceitam expressões lambda.

Vantagens das funções inline:

  • Redução dos custos de chamada de funções. Ao usar lambdas sem inline, objetos e chamadas adicionais são criados, o que reduz o desempenho.
  • Aumento do desempenho. A inserção direta do código evita a criação de objetos e chamadas adicionais.
  • Possibilidade de usar noinline e crossinline. Permite gerenciar de forma flexível o comportamento das lambdas dentro de funções inline.

Exemplo:

inline fun measureTime(block: () -> Unit) {
    val start = System.currentTimeMillis()
    block()
    val end = System.currentTimeMillis()
    println("Tempo de execução: ${end - start} ms")
}

fun main() {
    measureTime {
        // algum código
        Thread.sleep(100)
    }
}

Aqui, measureTime é uma função inline, e o corpo da lambda será inserido diretamente, o que reduzirá os custos adicionais.