как сделать в своем классе конструктор функции?
у класса Button есть функция .setOnClickListener{}, где после нажатия на кнопку будет выполняться то, что написано в фигурных скобках.
как сделать подобное для своего класса?
Ответы (1 шт):
Это не "конструктор функции", это просто передача лямбды как аргумента в метод.
На kotlin .setOnClickListener{} - это то же самое что .setOnClickListener() {} и то же самое что .setOnClickListener({}). Лямбда (то что в фигурных скобках) просто передается в метод как аргумент. Если она последний аргумент - она может выноситься из круглых скобок, если единственный аргумент - круглые скобки можно опустить (см. Passing trailing lambdas)
Пример, то что передано в doSomething будет вызвано внутри этого метода:
class Test {
fun doSomething(handler: () -> Unit) {
handler.invoke()
}
}
fun main() {
val test = Test()
test.doSomething({
println("Hello 1")
})
test.doSomething() {
println("Hello 2")
}
test.doSomething {
println("Hello 3")
}
}