синтаксис this @ для функции расширения - PullRequest
1 голос
/ 28 февраля 2020

Я пытаюсь выяснить, как сослаться на this внутри блока 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()
    }
}

Есть ли лучший способ, и почему это не работает?

1 Ответ

2 голосов
/ 28 февраля 2020

я пробую код enter image description here

, вы можете использовать this@foo для доступа к A или использовать вместо него

inline fun Activity.foo(bar: Fragment) {
    bar.let {
        this.xxx
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...