Sobes.tech
Middle

Ինչպես են աշխատում լամբդա արտահայտությունները Kotlin ծրագրավորման լեզվում?

sobes.tech AI

Պատասխան AI-ից

Լամբդա արտահայտությունները Kotlin-ում հանդիսանում են անանուն ֆունկցիաներ: Դրանք կարող են փոխանցվել որպես արգումենտ կամ պահվել փոփոխականում:

Հիմնական կետեր:

  • Սինտաքսիս: {} փակագծեր: Պարամետրերը նշվում են սլաք -> առաջ, ֆունկցիայի մարմինը՝ հետո: Եթե պարամետրեր չկան, սլաքը պարտադիր չէ:
  • Անհայտ անուն it: Եթե լամբդան ունի մեկ պարամետր, այն կարելի է չհայտարարել, և այն հասանելի կլինի it անունով:
  • Վերադարձվող արժեք: Լամբդայի մարմնի վերջին արտահայտությունը հանդիսանում է նրա վերադարձվող արժեքը:
  • Կապեր (Closures): Լամբդան կարող է մուտք ունենալ և փոփոխել այն փոփոխականները, որոնք սահմանվել են այն շրջակայքում, որտեղ այն հայտարարվել է:

Օրինակներ:

// Պարամետրեր չունեցող լամբդա
val hello = { println("Hello, world!") }
hello() // Լամբդայի կանչ

// Մեկ պարամետրով լամբդա (բացահայտում)
val square = { number: Int -> number * number }
println(square(5))

// Մեկ պարամետրով լամբդա (`it` օգտագործելով)
val increment = { it + 1 }
println(increment(10))

// Բազմաթիվ պարամետրերով լամբդա
val sum = { a: Int, b: Int -> a + b }
println(sum(2, 3))

// Լամբդա որպես բարձրակարգ ֆունկցիայի արգումենտ
fun operate(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
    return operation(a, b)
}
println(operate(4, 5, { x, y -> x * y })) // Լամբդայի փոխանցում

Համեմատություն անանուն ֆունկցիաների հետ (ավելի մանրամասն):

Հատկություն Լամբդա արտահայտություն Անանուն ֆունկցիա
Սինտաքսիս {} fun (...)
Վերադարձվող արժեքը Վերջին արտահայտությունը Ապակաս return
return ներսում Վերադարձ է ծնողական ֆունկցիայից (նոն-լոկալ return) Վերադարձ է ինքնուրույն ֆունկցիայից (լոկալ return)
it օգտագործում Այո (մեկ պարամետրով) Ոչ

Լամբդաները լայնորեն օգտագործվում են Kotlin-ում, հատկապես բարձրակարգ ֆունկցիաների հետ (map, filter, forEach և այլն), կարճ և արտահայտիչ կոդ ստեղծելու համար: Կոմպիլյատորը օպտիմալացնում է դրանց օգտագործումը։