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")
}