Kotlin'de fonksiyonlar nasıl tanımlanır?
sobes.tech yapay zeka
AI'dan gelen yanıt
Fonksiyonlar fun anahtar kelimesi kullanılarak tanımlanır, ardından fonksiyon adı, parantez içinde parametre listesi (isteğe bağlı), iki nokta ve dönüş tipi (isteğe bağlı) gelir. Fonksiyon gövdesi süslü parantezler içinde yer alır. Dönüş tipi atlanırsa, fonksiyon Unit döner (diğer dillerdeki void ile eşdeğerdir).
// Parametre ve dönüş değeri olmayan fonksiyon
fun greet() {
println("Hello!")
}
// Parametreli fonksiyon
fun add(x: Int, y: Int): Int {
return x + y
}
// Tek ifade ile fonksiyon (kısaltılmış gövde sözdizimi)
fun multiply(a: Int, b: Int) = a * b
Fonksiyon parametreleri isimParametre: Tip formatında tanımlanır. Varsayılan değerler belirtilebilir.
fun sendMessage(message: String, sender: String = "Unknown") {
println("$sender: $message")
}
Fonksiyonlar dosyanın üst seviyesinde veya sınıf, nesne veya arayüzlerin üyeleri olarak tanımlanabilir.
-
Üst seviye fonksiyonlar: Sınıf dışında tanımlanır.
fun calculateArea(radius: Double): Double { return Math.PI * radius * radius } -
Üye fonksiyonlar: Sınıf içinde tanımlanır.
class MyClass { fun doSomething() { println("Doing something.") } } -
Extension fonksiyonlar: Mevcut sınıflara fonksiyonlar "eklemeye" izin verir, kaynak kodlarını değiştirmeden.
fun String.reverseAndUpperCase(): String { return this.reversed().toUpperCase() }
Lambda ifadeleri ve anonim fonksiyonlar, argüman olarak geçirilebilen veya değişkenlere atanabilen fonksiyonel literallerdir.
val sum: (Int, Int) -> Int = { x, y -> x + y }
val greeting = { name: String -> "Hello, $name!" }
Yüksek dereceli fonksiyonlar, fonksiyonları parametre olarak alır veya fonksiyon döndürür.
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
Fonksiyon aşırı yüklemesi (aynı isimde, farklı imzalarla fonksiyonlar) otomatik olarak desteklenir.
fun printInfo(name: String) {
println("Name: $name")
}
fun printInfo(age: Int) {
println("Age: $age")
}