Как передать функцию в функцию на kotlin?

Пользователь

от hanna_jacobson , в категории: Другие , 3 года назад

Как передать функцию в функцию на kotlin?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от camren , 2 года назад

@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".


Вы также можете ис

Пользователь

от brook , 2 года назад

@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).