Sobes.tech
Junior

Ինչպես նկարագրել ֆունկցիաները Kotlin- ում?

sobes.tech AI

Պատասխան AI-ից

Ֆունկցիաները հայտարարում են fun բանալի բառով, որի հետևում է ֆունկցիայի անունը, պարամետրերի ցանկը կլոր փակագծերի մեջ (ընտրական), երկայն գծի նշան և վերադարձվող տիպը (ընտրական): Ֆունկցիայի մարմինը սահմանված է կոտորակների մեջ: Եթե վերադարձվող տիպը բացակայում է, ֆունկցիան վերադարձնում է Unit (համարժեք void-ին այլ լեզուներում):

// Պարամետրերով և վերադարձվող արժեքով ֆունկցիա
fun greet() {
    println("Hello!")
}

// Պարամետրերով ֆունկցիա
fun add(x: Int, y: Int): Int {
    return x + y
}

// Մի արտահայտությամբ ֆունկցիա (կրճատված մարմնի սինտաքս)
fun multiply(a: Int, b: Int) = a * b

Ֆունկցիայի պարամետրերը հայտարարում են անունՊարամետրի:Տիպ ձևով: Կարող եք սահմանել ըստ նախնական արժեքներ:

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

Ֆունկցիաները կարող են հայտարարվել ֆայլի վերևում կամ որպես դասերի, օբյեկտների կամ ինտերֆեյսների անդամներ:

  • Top-level functions: Դրանք հայտարարում են դասերի դուրս:

    fun calculateArea(radius: Double): Double {
        return Math.PI * radius * radius
    }
    
  • Member functions: Դրանք հայտարարում են դասերի ներսում:

    class MyClass {
        fun doSomething() {
            println("Doing something.")
        }
    }
    
  • Extension functions: Դրանք թույլ են տալիս "ավելացնել" ֆունկցիաներ գոյություն ունեցող դասերին առանց նրանց ծագող կոդը փոխելու:

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

Լամբդա արտահայտություններն ու անանուն ֆունկցիաները ներկայացնում են ֆունկցիոնալ գրականություններ, որոնք կարող են փոխանցվել որպես արգումենտներ կամ վերագրանցվել փոփոխականներին:

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

Վերևի ֆունկցիաները բարձր կարգի ֆունկցիաներ են, որոնք ընդունում են ֆունկցիաներ որպես պարամետրեր կամ վերադարձնում են ֆունկցիաներ:

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

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

Ֆունկցիաների վերագնահատում (այլ անուններով ֆունկցիաներ, բայց տարբեր սիգնատուրաներով) ավտոմատ կերպով աջակցվում է:

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

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