Следующая строка кода вызывает ошибку компиляции, связанную с Renderer::onScoreChange
.Сообщенная ошибка: Несоответствие типов.Обязательно: (Int, Int) → Unit
Найдено: KFunction3<Renderer, @ParameterName Int, @ParameterName Int, Unit>
var score by EngineObserver<Int>(20, Renderer::onScoreChange)
Я пытаюсь передать ссылку на функцию в пользовательский делегат, выходящий из класса ObservableProperty, но не уверен, почему он не распознает переданную функцию-член как удовлетворяющуютребования аргумента функции.Мысли от кого-нибудь?
class EngineObserver<T>(
initialValue: T,
val notify : (oldVal : T, newVal : T) -> Unit
) : ObservableProperty<T>(initialValue) {
override fun afterChange(property: KProperty<*>,
oldValue: T,
newValue: T) {
super.afterChange(property, oldValue, newValue)
notify(oldValue, newValue)
}
}
class Renderer {
fun onScoreChange(oldVal : Int, newVal : Int){
println("Score changed from $oldVal to $newVal")
}
}