Kotlin Fundamentals · Модуль «Функції» · Урок 8 з 8 · ~5 хв
Якщо потрібна функція вже існує — не пишіть лямбду заново, передайте посилання на неї.
Уявіть, що функція isEven уже написана:
fun isEven(n: Int) = n % 2 == 0
Якщо десь потрібна лямбда типу (Int) -> Boolean, можна написати обгортку:
check(4, { n -> isEven(n) })
Але це зайвий код — isEven вже має потрібний тип.
Замість обгортки можна передати посилання на функцію через :::
check(4, ::isEven)
Це працює, бо isEven має тип (Int) -> Boolean — точнісінько той, якого очікує check.
Посилання можна й зберегти у змінну — так само, як лямбду:
val check: (Int) -> Boolean = ::isEven
check(4) // true
{ }, коли логіка коротка й потрібна лише тут. Використовуйте ::ім'я, коли потрібна функція вже існує окремо.foo::toString) і на конструктори (::ClassName) працюють за тим самим принципом — до них повернемось, коли розглянемо класи.check(4, { n -> isEven(n) })Додайте свою функцію-предикат (наприклад, isPositive) і передайте її посиланням у check.
Не завантажується? Відкрити напряму →
map, filter тощо), яку розглянемо в наступних темах.
Синтаксис і глосарій — у довіднику «Лямбди та функції вищого порядку». Першоджерело: Kotlin Docs — Function references.