Ինչպես նկարագրել ֆունկցիաները 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")
}