在构造函数中传递的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

我创建了一个类,它接受一个输入参数,即lambda函数:

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()

我会选择最后一个