Как се описват функциите в 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")
}
Функциите могат да бъдат обявени на ниво файл или като членове на класове, обекти или интерфейси.
-
Функции на ниво файл: Обявяват се извън класове.
fun calculateArea(radius: Double): Double { return Math.PI * radius * radius } -
Членови функции: Обявяват се вътре в класове.
class MyClass { fun doSomething() { println("Doing something.") } } -
Функции за разширение: Позволяват "да добавите" функции към съществуващи класове без да променяте техния изходен код.
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 }) // резултат = 15
Пренатоварването на функции (различни функции с едно и също име, но различни сигнатури) се поддържа автоматично.
fun printInfo(name: String) {
println("Name: $name")
}
fun printInfo(age: Int) {
println("Age: $age")
}