Kotlin Fundamentals · Модуль «Функції» · Урок 6 з 8 · ~6 хв
Функція, яка приймає іншу функцію як параметр (або повертає функцію), — вища порядком.
Раз лямбду можна покласти у змінну, її можна передати і як аргумент — параметр просто оголошується з функціональним типом:
fun operate(a: Int, b: Int, op: (Int, Int) -> Int): Int {
return op(a, b)
}
op — параметр-функція: щось, що приймає два Int і повертає Int. Усередині operate її викликають так само, як звичайну функцію: op(a, b).
val sum = { x: Int, y: Int -> x + y }
val times = { x: Int, y: Int -> x * y }
operate(3, 4, sum) // 7
operate(3, 4, times) // 12
operate(3, 4, { x, y -> x - y }) // 1 — лямбду можна писати і прямо тут
operate поводиться по-різному залежно від того, яку лямбду їй передали — логіку не потрібно дублювати чи розгалужувати через if.check(x: Int, predicate: (Int) -> Boolean): Boolean, яка викликає predicate над x і повертає результат.operate(3, 4, sum) з прикладу вище?Додайте власну лямбду (наприклад, ділення) і передайте її в operate.
Не завантажується? Відкрити напряму →
Синтаксис і глосарій — у довіднику «Лямбди та функції вищого порядку».