Предположим, нам нужна функция, которая будет принимать число в качестве параметра и возвращать сумму этих двух чисел. В kotlin мы кодируем как ниже
fun add(number1: Int, number2: Int) = number1 + number2
Приведенный выше код работает нормально. Но проблема в том, что если мы хотим реализовать в нашем коде другие математические термины, такие как вычитание, умножение и деление, мы должны написать отдельный метод для отдельного математического расчета. Нравится
fun subtract(number1: Int, number2: Int) = number1 - number2 fun division(number1: Int, number2: Int) = number1 / number2 fun multiplication(number1: Int, number2: Int) = number1 * number2
И мы вызываем эти функции в классе Main, как показано ниже.
println(add(12, 2)) // 14 println(subtract(12, 2)) // 10 println(multiplication(12, 2)) // 24 println(division(12, 2)) // 12
Но мы можем написать один метод для вычисления всех типов математических задач с помощью Lambda. Функция будет такой
fun calculate(num1: Int, num2: Int, lambda: (Int, Int)->Int): Int { return lambda(num1, num2) }
И мы вызываем функцию в классе Main, как показано ниже.
println(calculate(12, 12) {num1, num2 -> num1 + num2 })
Этот код рассчитает сумму двух чисел. Если мы используем другой оператор вместо (+), функция будет считать по знаку.
Полный исходный код здесь