Sobes.tech
Junior

Kādas redzes funkcijas jūs zināt Kotlin?

sobes.tech AI

Atbilde no AI

  • let: Izpilda koda bloka uz objekta un atgriež pēdējās izteiksmes rezultātu. Bieži tiek izmantots drošai metožu izsaukšanai uz nullable objektiem.
  • run: ir divas iespējas:
    • kā paplašinājums: izpilda koda bloka uz objekta (this) un atgriež pēdējās izteiksmes rezultātu.
    • kā neatkarīga funkcija: izpilda koda bloku bez saņēmēja un atgriež pēdējās izteiksmes rezultātu.
  • with: izpilda koda bloka uz saņēmēja objekta un atgriež pēdējās izteiksmes rezultātu.
  • apply: izpilda koda bloku uz objekta (this) un atgriež pašu objektu. Bieži tiek izmantots objekta īpašību konfigurēšanai.
  • also: izpilda koda bloku uz objekta (it) un atgriež pašu objektu. Tiek izmantots blakus darbībām uz objekta.
// `let` piemērs
val name: String? = "Kotlin"
val length = name?.let {
    // this == null
    // it == "Kotlin"
    it.length // virknes garums
} // length == 6

// `run` kā paplašinājuma piemērs
val numbers = mutableListOf(1, 2, 3)
val firstAndLast = numbers.run {
    listOf(first(), last())
    // this == numbers
} // firstAndLast == [1, 3]

// `run` kā neatkarīga funkcija piemērs
val result = run {
    // bez saņēmēja
    println("Running a block")
    1 + 2 // atgriež 3
} // result == 3

// `with` piemērs
val configuration = configureUsing {
    // this - objekts, kas tiek nodots
    width = 100
    height = 200
}

fun configureUsing(builder: ScopeExample.() -> Unit): ScopeExample {
    val example = ScopeExample()
    example.builder()
    return example
}

class ScopeExample {
    var width: Int = 0
    var height: Int = 0
}

// `apply` piemērs
val person = mutableListOf<String>().apply {
    // this == saraksts
    add("Alice")
    add("Bob")
} // person == ["Alice", "Bob"]

// `also` piemērs
val list = mutableListOf(1, 2, 3)
val doubledList = list.also {
    // it == saraksts
    println("Processing list: $it")
}.map { it * 2 } // doubledList == [2, 4, 6]