Avatar ·

Quando usar funções inline em Kotlin e como elas afetam o desempenho?

Olá a todos! Recentemente comecei a estudar Kotlin e me deparei com algo chamado funções inline. Na documentação diz que elas ajudam a evitar a sobrecarga de criação de objetos lambda, mas não entendo muito bem quando realmente devo usá-las. Por exemplo, tenho uma função de ordem superior simples: ```kotlin fun measureTime(action: () -> Unit) { val start = System.currentTimeMillis() action() val end = System.currentTimeMillis() println("Time: ${end - start} ms") } ``` Eu a chamo assim: ```kotlin measureTime { Thread.sleep(100) println("Hello") } ``` Tudo funciona, mas li que sem `inline` um novo objeto é criado para o lambda toda vez. Isso é realmente um problema? Quando se torna crítico? Também vi exemplos com `reified` (tipos reificados) — supostamente só podem ser usados com inline. Isso é verdade? E como isso se relaciona com o desempenho? Vocês podem explicar de forma simples: em quais casos devo escrever `inline` e quando não?