I\'m starting developing in Android with kotlin and I have a problem with lambdas. I have a function to set a listener in my view, this looks like this:
fun setL
You can store a function in a property easily. The simplest way:
var listener: (() -> Unit)? = null
Usage:
foo.listener = { println("called") }
If you want your property to be set-only, you can create one public property with unusable getter and one private property for internal use. Full example:
class Example {
// for internal use
private var _listener: (() -> Unit)? = null
// public set-only
var listener: (() -> Unit)?
@Deprecated(message = "set-only", level = DeprecationLevel.ERROR)
get() = throw AssertionError() // unusable getter
set(value) { _listener = value } // write-through setter
fun somethingHappend() {
_listener?.invoke()
}
}