Как в Kotlin внутренний анонимный класс преобразовать в лямбда-выражение?

Есть интерфейс Operation, вот его код:

interface Operation {
    fun getResult(param1: Double, param2: Double): Double
}

В MainActivity создаём внутренний анонимный класс:

var operation: Operation = object : Operation {
       override fun getResult(param1: Double, param2: Double): Double {
            return param1*param2
       }
   }

И затем выводим в консоль значение, которое возвращает метод getResult():

println("${operation.getResult(2.0, 2.0)}")

Можно ли вместо анонимного класса использовать лямбда-выражение, и если да, то как это будет выглядеть в коде?


Ответы (1 шт):

Автор решения: Alex_Skvortsov

Java интерфейсы обрабатываются автоматом, а вот для интерфейсов. объявленных в Kotlin, нужна специальная пометка fun

Как пример:

fun interface Operation {
    fun getResult(param1: Double, param2: Double): Double
}

Студия должна после этого изменения автоматом предложить превратить объект в лямбду примерно такого вида:

var operation = Operation { param1, param2 -> param1*param2 }

Ссылка на документацию, где можно почитать чуть подробнее про функциональные интерфейсы туть

→ Ссылка