Sobes.tech
Middle

Как работят лямбда изразите в езика за програмиране Kotlin?

sobes.tech AI

Отговор от AI

Изразите lambda в Kotlin представляват анонимни функции. Те могат да бъдат предавани като аргументи или съхранявани в променливи.

Ключови моменти:

  • Синтаксис: Скоби {}. Параметрите се посочват преди стрелката ->, тялото на функцията след нея. Ако няма параметри, стрелката е опционална.
  • Неявно име на параметъра it: Ако lambda има един параметър, не е необходимо да го обявявате явно, той ще бъде достъпен под името it.
  • Стойност на връщане: Последното изражение в тялото на lambda е нейното стойност на връщане.
  • Затваряния (Closures): Lambda може да има достъп и да променя променливи от обхвата, в който е дефинирана.

Примери:

// Lambda без параметри
val hello = { println("Hello, world!") }
hello() // Викаме lambda

// Lambda с един параметър (явно обявяване)
val square = { number: Int -> number * number }
println(square(5))

// Lambda с един параметър (използване на `it`)
val increment = { it + 1 }
println(increment(10))

// Lambda с няколко параметъра
val sum = { a: Int, b: Int -> a + b }
println(sum(2, 3))

// 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

Сравнение с анонимни функции (подробно):

Характеристика Lambda израз Анонимна функция
Синтаксис {} fun (...)
Стойност на връщане Последното изражение Явно return
return вътре Връща от родителската функция (нелокален return) Връща от самата анонимна функция (локален return)
Използване на it Да (за един параметър) Не

Lambda-изразите се използват широко в Kotlin, особено с функции с високо ниво (map, filter, forEach и др.), за създаване на лаконичен и изразителен код. Компилаторът ги оптимизира.