Sobes.tech
Junior

Quais funções auxiliares você conhece ou usou na sua experiência?

sobes.tech IA

Resposta da IA

  • Expressões lambda: Reduzem o código para funções pequenas, como manipuladores de cliques ou callbacks.

  • Funções de extensão (Kotlin): Adicionam novas funções às classes existentes sem herança, melhorando a legibilidade e a conveniência.

    fun String.isPalindrome(): Boolean {
        // Verifica se a string é um palíndromo
        return this == this.reversed()
    }
    
  • Funções inline (Kotlin): Inserem o corpo da função no local da chamada, reduzindo a sobrecarga de criar objetos de função, especialmente útil com lambdas.

    inline fun measureExecutionTime(block: () -> Unit) {
        // Mede o tempo de execução do bloco de código
        val startTime = System.currentTimeMillis()
        block()
        val endTime = System.currentTimeMillis()
        println("Tempo de execução: ${endTime - startTime} ms")
    }
    
  • Classes de dados (Kotlin): Geram automaticamente equals(), hashCode(), toString(), copy(), útil para armazenar dados.

    data class User(val name: String, val age: Int)
    
  • Classes seladas (Kotlin): Representam uma hierarquia limitada de classes, úteis para modelar estados ou eventos, especialmente em combinação com when.

  • Genéricos: Permitem criar componentes reutilizáveis que trabalham com diferentes tipos de dados.

    public class Box<T> {
        // Classe genérica para armazenar qualquer tipo de dado
        private T data;
    
        public void setData(T data) {
            this.data = data;
        }
    
        public T getData() {
            return data;
        }
    }
    
  • Operações com coleções (map, filter, reduce, etc.): Métodos funcionais para processar coleções de dados.

    val numbers = listOf(1, 2, 3, 4, 5)
    val squaredEvenNumbers = numbers
        .filter { it % 2 == 0 } // Filtra os pares
        .map { it * it }      // Eleva ao quadrado
    
  • Getters de recursos (Kotlin): Para obter strings, cores, tamanhos, etc., de recursos.

    val appName = context.getString(R.string.app_name)
    val primaryColor = ContextCompat.getColor(context, R.color.colorPrimary)
    
  • Tipos nulos e chamadas seguras (Kotlin): Reduzem a quantidade de NullPointerException.

    val name: String? = null
    val length = name?.length ?: 0 // Chamada segura e operador Elvis