Проблема в том, что вы создали обратный вызов, который принимает функцию, но вы никогда не вызываете эту функцию.
Давайте удалим некоторый код, чтобы упростить пример:
fun main() {
var clicks = 0
fun tryToClickOnButton(button: Button): Int {
button.onClick { println("UPP $clicks") }
button.onClick { clicks++ }
button.onClick { println("UPP $clicks") }
return clicks
}
val button = object : Button {
override fun onClick(function: () -> Unit) {
println("BBBBB $clicks")
}
}
println(tryToClickOnButton(button))
}
Вы можете видеть, что в вашем обратном вызове Button
s onClick
вы принимаете аргумент под названием function
типа «функция», но вы никогда не используете его. По этой причине вы никогда не будете печатать «UPP $ {клики}» и никогда не будете увеличивать значение clicks
.
Чтобы решить эту проблему, вам просто нужно вызвать function
, например:
fun main() {
var clicks = 0
fun tryToClickOnButton(button: Button): Int {
button.onClick { println("UPP $clicks") }
button.onClick { clicks++ }
button.onClick { println("UPP $clicks") }
return clicks
}
val button = object : Button {
override fun onClick(function: () -> Unit) {
println("BBBBB $clicks")
function() // this was missing
}
}
println(tryToClickOnButton(button))
}
Этот код печатает:
BBBBB 0
UPP 0
BBBBB 0
BBBBB 1
UPP 1
1