在构造函数中传递的lambda函数中访问类上下文
我创建了一个类,它接受一个输入参数,即lambda函数:在构造函数中传递的lambda函数中访问类上下文,lambda,kotlin,Lambda,Kotlin,我创建了一个类,它接受一个输入参数,即lambda函数: class MyClass(var onClick: () -> Unit) { private val title = SomeComponent() init { // register some listeners that finally invokes `onClick` // for simplicity, let's assume: title.add
class MyClass(var onClick: () -> Unit) {
private val title = SomeComponent()
init {
// register some listeners that finally invokes `onClick`
// for simplicity, let's assume:
title.addKeyListener(object : KeyListener {
override fun keyPressed(e: KeyEvent?) {
onClick()
}
})
}
}
此MyClass
通过提供的onClick
初始化:
val instance = MyClass(
onClick = {
// some logic
}
)
是否可以从
onClick
函数内部访问类上下文?当然,您可以将onClick
MyClass
作为接收方
class MyClass(var onClick: MyClass.() -> Unit) { //...
init {
//...
onClick()
//...
}
}
fun main() {
MyClass {
// "this" is the instance of MyClass here
}
}
在init
块中,有三个选项可以调用onClick()
:
我会选择最后一个。当然,你可以把
onClick
MyClass
作为接收者
class MyClass(var onClick: MyClass.() -> Unit) { //...
init {
//...
onClick()
//...
}
}
fun main() {
MyClass {
// "this" is the instance of MyClass here
}
}
在init
块中,有三个选项可以调用onClick()
:
我会选择最后一个