Анонимные функции похожи на обычные функции за исключением того, что у них не пишется название. Они могут, как и обычные функции иметь тело или служить для вычисления выражения и возвращения результата:
В примере ниже объявлена функция, которая принимает два параметра: первый должен иметь тип Int, второй имеет тип функции, который принимает один параметр типа Int и возвращает также такой параметр (как в предыдущем примере):
fun anonymTest(param : Int, func : (Int) -> Int)
{
val result = func(param)
println(result)
}
anonymTest(20, fun(p : Int) : Int {
return p * 20
})
val mult = 100
anonymTest(20, fun(p : Int) : Int {
// Тело функции получает доступ к переменной написанной вне этой функции, что в данном случае и является замыканием
return p * mult
})
Реклама