Kotlin &引用;这";扩展函数的语法

Kotlin &引用;这";扩展函数的语法,kotlin,Kotlin,我试图找出如何在with块中引用这个 inline fun A.foo(bar: B, crossinline block: B.() -> Unit) { with (bar) { this@A.doSomething() // compile error, "unresolved reference @A" block() } } 以下是我的解决方法: inline fun A.foo(bar: B, crossinline block

我试图找出如何在
with
块中引用
这个

inline fun A.foo(bar: B, crossinline block: B.() -> Unit) {
    with (bar) {
        this@A.doSomething() // compile error, "unresolved reference @A"
        block()
    }
}
以下是我的解决方法:

inline fun A.foo(bar: B, crossinline block: B.() -> Unit) {
    val self = this
    with (bar) {
        self.doSomething() // okay, but ugly
        block()
    }
}
有更好的方法吗?为什么不起作用?

我尝试了代码

你可以用this@foo访问,或改用let

inline fun Activity.foo(bar: Fragment) {
    bar.let {
        this.xxx
    }
}

this@foo.doSomething()
是的,就是这样。@DrawnAccoon如果你将此作为答案发布,我将接受它,因为你是第一个。如果你没有在合理的时间内回复,我会接受另一张海报。正如@draw已经回答的,
this@foo
是我想要的
Let
在这里没有相同的语义。my
foo
bar
都有一个同名的属性,Kotlin用
let
选择了一个“错误”的属性,这与用
with
不同。使用let,你可以用它访问a,用它访问b,所以它不会混淆,正如我已经提到的,
let
在这里不起作用。我想写
this@A.color=color
,但是使用
let
它是
it.color=this.color
,我觉得它太难读了。