Middle
Kotlin dasturlash tilida lambda ifodalar qanday ishlaydi?
sobes.tech AI
AIdan javob
Kotlin'da lambda ifadeleri anonim funksiyalardır. Argüman kimi ötürülə və ya dəyişəndə saxlanıla bilər.
Əsas məqamlar:
- Sintaksis: Möhtəşəm
{}. Parametrlər->oxundan əvvəl göstərilir, funksiyanın gövdəsi sonra. Əgər parametr yoxdursa, oxu seçimi ola bilər. - İmplicit
itparametri adı: Lambda tək parametrə malikdirsə, onu açıq elan etməyə ehtiyac yoxdur,itadı ilə mövcuddur. - Geri dönüş dəyəri: Lambda gövdəsindəki son ifadə onun geri dönüş dəyəridir.
- Bağlamalar (Closures): Lambdalar təyin olunduğu sahədən dəyişənlərə daxil ola və onları dəyişə bilər.
Nümunələr:
// Parametrsiz lambda
val hello = { println("Hello, world!") }
hello() // Lambda çağırışı
// Bir parametrli lambda (açıq elan)
val square = { number: Int -> number * number }
println(square(5))
// `it` istifadə edən lambda
val increment = { it + 1 }
println(increment(10))
// Bir neçə parametrli lambda
val sum = { a: Int, b: Int -> a + b }
println(sum(2, 3))
// Yüksək səviyyəli funksiyanın arqumenti kimi lambda
fun operate(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
return operation(a, b)
}
println(operate(4, 5, { x, y -> x * y })) // Lambda ötürülməsi
Anonim funksiyalarla müqayisə (daha ətraflı):
| Xüsusiyyət | Lambda ifadəsi | Anonim funksiya |
|---|---|---|
| Sintaksis | {} |
fun (...) |
| Geri dönüş dəyəri | Son ifadə | Açıq return istifadə edilə bilər |
return içində |
Valideyn funksiyadan geri dönər (lokal olmayan geri dönüş) | Anonim funksiyadan geri dönər (lokal geri dönüş) |
it istifadə edilər |
Bəli (bir parametr üçün) | Xeyr |
Lambda ifadələri Kotlin-də geniş istifadə olunur, xüsusən də map, filter, forEach və s. kimi yüksək səviyyəli funksiyalarla, qısa və ifadəli kod yaratmaq üçün. Kompilyator onların istifadəsini optimallaşdırır.