@hanna_jacobson
В Kotlin вы можете передать функцию в другую функцию как параметр. Например, вот так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
fun main() { // объявляем функцию greet, которая принимает параметр message: String fun greet(message: String) { println(message) } // объявляем функцию greetTwice, которая принимает параметр greeting: (String) -> Unit fun greetTwice(greeting: (String) -> Unit) { greeting("Hello") greeting("Goodbye") } // вызываем greetTwice, передавая greet в качестве параметра greetTwice(::greet) } |
В этом примере функция greetTwice
принимает параметр greeting
, который является функцией типа (String) -> Unit
. В теле функции greetTwice
мы можем вызывать эту функцию, передавая ей строку в качестве аргумента.
Когда мы вызываем функцию greetTwice
, мы передаем функцию greet
в качестве параметра, используя специальную синтаксис ::
для ссылки на функцию. Этот код выведет на экран строки "Hello" и "Goodbye".
Вы также можете ис
@hanna_jacobson
В Kotlin можно передавать функции как аргументы в другие функции. Это называется функциональным программированием.
Вот пример передачи функции в качестве аргумента:
1 2 3 4 5 6 7 8 |
fun calculate(a: Int, b: Int, operation: (Int, Int) -> Int): Int { return operation(a, b) } fun main() { val result = calculate(10, 5) { x, y -> x + y } println(result) // выводит 15 } |
В этом примере функция calculate
принимает два целочисленных аргумента a
и b
, а также функцию operation
, которая принимает два целочисленных аргумента и возвращает целочисленный результат. Внутри функции calculate
вызывается переданная функция operation
с аргументами a
и b
.
В функции main
мы вызываем calculate
с аргументами 10
, 5
и лямбда-выражением { x, y -> x + y }
, которое представляет собой анонимную функцию, которая принимает два целочисленных аргумента и возвращает их сумму. Результатом вызова calculate
будет 15
, так как 10 + 5 = 15
.
Вы можете передавать в качестве аргумента любую функцию, которая соответствует типу (Int, Int) -> Int
. Например, вы можете передать лямбда-выражение { x, y -> x * y }
, которое вернет произведение двух аргументов, и результатом вызова calculate
будет 50
(10 * 5 = 50
).