Sobes.tech
Senior

Ce funcționalități ale limbajului Kotlin ai dori să vezi în alte limbaje de programare?

sobes.tech AI

Răspuns de la AI

  • Funcții de extensie: Permite adăugarea de funcții noi la clase existente fără moștenire sau utilizarea pattern-urilor decorator. Îmbunătățește lizibilitatea și organizarea codului.

  • Siguranța null (null-safety): Sistem de tipuri care distinge explicit între tipuri nullable și non-nullable, prevenind erorile NullPointerException în timpul compilării.

  • Clase de date: Crearea simplificată a claselor pentru stocarea datelor cu generare automată a equals(), hashCode(), toString(), copy().

    data class User(val name: String, val age: Int)
    
  • Expresii while și when: when este o alternativă puternică la switch cu suport pentru diferite condiții (tipuri, intervale, condiții booleene), while poate fi o expresie care returnează valoarea ultimei condiții evaluate.

    val result = when (x) {
        1 -> "unu"
        in 2..10 -> "de la doi la zece"
        is String -> "șir de caractere"
        else -> "altceva"
    }
    
  • Corutine: Fire ușoare care facilitează programarea asincronă și non-blocantă. Integrate la nivel de limbaj.

  • Argumente numite și opționale: Îmbunătățesc lizibilitatea la apelarea funcțiilor și permit omiterea parametrilor opționali.

    fun greet(name: String, greeting: String = "Salut") {
        println("$greeting, $name!")
    }
    
    greet(name = "Lume") // Folosind argumentul opțional implicit
    greet(name = "Lume", greeting = "Bună") // Suprascrierea argumentului opțional
    
  • Smart casts: Compilatorul determină automat tipul unei variabile după o verificare (de exemplu, is), permițând accesul la membrii acelui tip fără conversie explicită.

    fun printLength(obj: Any) {
        if (obj is String) {
            // Acum, obj este considerat String
            println("Lungimea șirului: ${obj.length}")
        }
    }
    
  • Inferența de tip: Compilatorul poate determina automat tipul unei variabile, reducând redundanța codului.

    val number = 42 // Kotlin determină că este un Int
    val message = "Salut" // Kotlin determină că este un String
    
  • Expresii lambda cu parametru implicit it: Util pentru lambda simple cu un singur parametru.

    val list = listOf(1, 2, 3)
    list.forEach { println(it) } // it este elementul listei