Sobes.tech
Junior

Kokias pagalbines funkcijas žinote ar naudojote savo patirtyje?

sobes.tech AI

Atsakymas iš AI

  • Lambdų išraiškos: Trumpina kodą mažoms funkcijų apdorojimo funkcijoms, pavyzdžiui, paspaudimams ar atgaliniams kvietimams.

  • Extension Functions (Kotlin): Prideda naujas funkcijas prie esamų klasių be paveldėjimo, gerindamos skaitomumą ir patogumą.

    fun String.isPalindrome(): Boolean {
        // Patikrina, ar eilutė yra palindromas
        return this == this.reversed()
    }
    
  • Inline Functions (Kotlin): Įterpia funkcijos turinį į iškvietimo vietą, sumažindama objekto kūrimo išlaidas, ypač naudinga su lambda išraiškomis.

    inline fun measureExecutionTime(block: () -> Unit) {
        // Matuoja vykdymo laiką
        val startTime = System.currentTimeMillis()
        block()
        val endTime = System.currentTimeMillis()
        println("Vykdymo laikas: ${endTime - startTime} ms")
    }
    
  • Data Classes (Kotlin): Automatiškai generuoja equals(), hashCode(), toString(), copy(), patogus duomenų saugojimui.

    data class User(val name: String, val age: Int)
    
  • Sealed Classes (Kotlin): Ribota paveldėjimo hierarchija, naudinga būsenų ar įvykių modeliavimui, ypač su when operatoriumi.

  • Generics: Leidžia kurti daugkartinio naudojimo komponentus, dirbančius su įvairiais duomenų tipais.

    public class Box<T> {
        // Bendrasis klasė bet kokio duomenų tipo saugojimui
        private T data;
    
        public void setData(T data) {
            this.data = data;
        }
    
        public T getData() {
            return data;
        }
    }
    
  • Operacijos su kolekcijomis (map, filter, reduce ir kt.): Funkciniai metodai duomenų kolekcijų apdorojimui:

    val numbers = listOf(1, 2, 3, 4, 5)
    val squaredEvenNumbers = numbers
        .filter { it % 2 == 0 } // Filtruoti lyginius
        .map { it * it }      // Pakelti kvadratu
    
  • Resource getters (Kotlin): Gauti eilutes, spalvas, dydžius ir kt. iš išteklių:

    val appName = context.getString(R.string.app_name)
    val primaryColor = ContextCompat.getColor(context, R.color.colorPrimary)
    
  • Nullable types and safe calls (Kotlin): Sumažina NullPointerException skaičių:

    val name: String? = null
    val length = name?.length ?: 0 // Saugi iškvietimas ir Elvis operatorius