Sobes.tech
Junior

Hogyan írjuk le a függvényeket Kotlinben?

sobes.tech MI

Válasz az MI-től

A függvényeket a fun kulcsszóval deklarálják, amelyet a függvény neve követ, majd opcionálisan paraméterek listája zárójelek között, kettőspont és a visszatérési típus (szintén opcionális). A függvény törzse kapcsos zárójelek között található. Ha a visszatérési típus el van hagyva, a függvény Unit-ot ad vissza (ami más nyelveken a void megfelelője).

// Paraméter nélküli és visszatérési érték nélküli függvény
fun greet() {
    println("Hello!")
}

// Paraméterekkel rendelkező függvény
fun add(x: Int, y: Int): Int {
    return x + y
}

// Egy kifejezést tartalmazó rövidített szintaxis
fun multiply(a: Int, b: Int) = a * b

A függvény paraméterei a nevParaméter: Típus formátumban vannak deklarálva. Alapértelmezett értékek is megadhatók.

fun sendMessage(message: String, sender: String = "Unknown") {
    println("$sender: $message")
}

A függvények a fájl felső szintjén vagy osztályok, objektumok vagy interfészek tagjaként is deklarálhatók.

  • Felső szintű függvények: Osztályokon kívül deklarálják őket.

    fun calculateArea(radius: Double): Double {
        return Math.PI * radius * radius
    }
    
  • Tagfüggvények: Osztályokon belül deklarálják őket.

    class MyClass {
        fun doSomething() {
            println("Doing something.")
        }
    }
    
  • Bővítési függvények: Lehetővé teszik, hogy "hozzáadjuk" a meglévő osztályokhoz a függvényeket anélkül, hogy módosítanánk a forráskódjukat.

    fun String.reverseAndUpperCase(): String {
        return this.reversed().toUpperCase()
    }
    

A lambda kifejezések és névtelen függvények olyan funkcionális literálok, amelyeket argumentumként lehet átadni vagy változóknak lehet hozzárendelni.

val sum: (Int, Int) -> Int = { x, y -> x + y }
val greeting = { name: String -> "Hello, $name!" }

A magasabb rendű függvények fogadnak függvényeket paraméterként vagy adnak vissza függvényeket.

fun operate(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
    return operation(a, b)
}

val result = operate(5, 3, { x, y -> x * y }) // eredmény = 15

A függvény túlterhelés (azonos névvel, de különböző szignatúrákkal rendelkező függvények) automatikusan támogatott.

fun printInfo(name: String) {
    println("Name: $name")
}

fun printInfo(age: Int) {
    println("Age: $age")
}