Найти в Дзене
Voyti v it

Анонимные функции в Котлин.

Анонимные функции (или лябда выражения) отличаются по виду от обычных тем, что не имеют имени. Ну это понятно. Анонимная функция может иметь одно выражение: например fun(x: Int, y: Int): Int = x + y Рассмотрим следующий пример, демонстрирующий синтаксис лямбда-выражения: {x, y -> x+y} Это простое лямбда-выражение, которое принимает два параметра: x и y и возвращает их сумму. Параметры функции перечислены перед оператором ->, а тело функции начинается после оператора ->. Это лямбда-выражение может быть присвоено переменной и использовано следующим образом: val sumLambda: (Int, Int) -> Int = {x,y -> x+y}
val actualSum = sumLambda(3,4) Обратите внимание, что тип переменной, которая содержит выражение лямбда, указывает типы его параметров и возвращаемое значение. Создание функции более высокого порядка, которая может принимать приведенное выше лямбда-выражение в качестве параметра, так же просто. Например, чтобы создать функцию, которая удваивает результат выражения лямбда, вы должны напи

Анонимные функции (или лябда выражения) отличаются по виду от обычных тем, что не имеют имени. Ну это понятно. Анонимная функция может иметь одно выражение: например fun(x: Int, y: Int): Int = x + y

Рассмотрим следующий пример, демонстрирующий синтаксис лямбда-выражения:

{x, y -> x+y}

Это простое лямбда-выражение, которое принимает два параметра: x и y и возвращает их сумму. Параметры функции перечислены перед оператором ->, а тело функции начинается после оператора ->. Это лямбда-выражение может быть присвоено переменной и использовано следующим образом:

val sumLambda: (Int, Int) -> Int = {x,y -> x+y}
val actualSum = sumLambda(3,4)

Обратите внимание, что тип переменной, которая содержит выражение лямбда, указывает типы его параметров и возвращаемое значение.

Создание функции более высокого порядка, которая может принимать приведенное выше лямбда-выражение в качестве параметра, так же просто. Например, чтобы создать функцию, которая удваивает результат выражения лямбда, вы должны написать:

fun doubleTheResult(x:Int, y:Int, f:(Int, Int)->Int): Int {
return f(x,y) * 2
}

Вы можете вызвать эту функцию следующим образом:

val result1 = doubleTheResult(3, 4, sumLambda)

Кроме того, вы можете передать выражение лямбда прямо в функцию более высокого порядка:

val result2 = doubleTheResult(3, 4, {x,y -> x+y})

Примеры взяты с сайта https://code.tutsplus.com/