В Kotlin можно объявить функцию расширения в интерфейсе, подобном этому:
interface Evaluator {
fun Double.evaluateY1(): Double
fun Double.evaluateY2(): Double
}
class EvaluatorImpl : Evaluator {
override fun Double.evaluateY1(): Double {
return this + 2.0
}
override fun Double.evaluateY2(): Double {
return this + 3.0
}
}
Имея получатель и экземпляр интерфейса, как мне вызвать такую функцию расширения?
Я придумал трюк с функцией охвата with
, но я бы предпочел что-то с меньшим отступом.
fun usageExample(evaluator: Evaluator, x: Double) {
with(evaluator) {
println("Y1 = ${x.evaluateY1()}. Y2 = ${x.evaluateY2()}")
}
}