Sobes.tech
Junior

Co jsou rozšiřující funkce v Kotlinu?

sobes.tech AI

Odpověď od AI

Rozšiřující funkce jsou funkce, které umožňují přidávat novou funkčnost stávajícím třídám, aniž by bylo nutné měnit jejich zdrojový kód a bez použití dědičnosti.

Jsou deklarovány mimo třídu a jsou k ní přiřazeny pomocí syntaxe <TřídaAkce>.funkce<Parametry>. Uvnitř rozšiřující funkce odkazuje this na instanci třídy, pro kterou je volána.

Příklad:

// Deklarace rozšiřující funkce pro třídu String
fun String.addGreeting(): String {
    return "Ahoj, $this!"
}

fun main() {
    val name = "Svět"
    // Volání rozšiřující funkce
    println(name.addGreeting()) // Vypíše "Ahoj, Svět!"
}

Hlavní výhody:

  • Čistota kódu: Není nutné vytvářet pomocné třídy s statickými metodami nebo dědit třídy pouze pro přidání funkčnosti.
  • Čitelnost: Volání rozšiřujících funkcí vypadá jako běžné metody třídy.
  • Modularita: Funkcionalitu lze přidat v lokálním rozsahu.

Omezení:

  • Rozšiřující funkce nemají přístup k soukromým nebo chráněným členům třídy.
  • V případě konfliktu mezi metodou třídy a rozšiřující funkcí se stejnou signaturou má přednost metoda třídy.