Как в 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 }
Ссылка на документацию, где можно почитать чуть подробнее про функциональные интерфейсы туть