← Усі уроки

Kotlin Fundamentals · Модуль «Функції» · Урок 6 з 8 · ~6 хв

Функції вищого порядку

Функція, яка приймає іншу функцію як параметр (або повертає функцію), — вища порядком.

1. Функція як параметр

Раз лямбду можна покласти у змінну, її можна передати і як аргумент — параметр просто оголошується з функціональним типом:

fun operate(a: Int, b: Int, op: (Int, Int) -> Int): Int {
    return op(a, b)
}

op — параметр-функція: щось, що приймає два Int і повертає Int. Усередині operate її викликають так само, як звичайну функцію: op(a, b).

2. Виклик з різними лямбдами

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.

Не завантажується? Відкрити напряму →

Довідка

Синтаксис і глосарій — у довіднику «Лямбди та функції вищого порядку».