gpt4 book ai didi

android - 如何在范围内使 `this`引用Kotlin Android Extension类型类?

转载 作者:行者123 更新时间:2023-12-02 13:04:54 25 4
gpt4 key购买 nike

我有如下代码

        recycler_view.apply {
// Some other code
LinearSnapHelper().attachToRecyclerView(this)
}

如果我想使用 apply,下面的 this错误输出
        recycler_view.apply {
// Some other code
LinearSnapHelper().apply {
.attachToRecyclerView(this) // This will error because `this` is LinearSnapHelper()
}
}

我尝试了 this@RecyclerView仍然错误
        recycler_view.apply {
// Some other code
LinearSnapHelper().apply {
.attachToRecyclerView(this@RecyclerView) // Still error
}
}

我尝试了 this@recycler_view仍然错误
        recycler_view.apply {
// Some other code
LinearSnapHelper().apply {
.attachToRecyclerView(this@recycler_view) // Still error
}
}

this称为 recycler_view的语法是什么?

注意:我可以执行以下操作,但是就像学习如何在 this中拥有 apply一样,它指的是Kotlin Android Extension类型类。
        recycler_view.apply {
// Some other code
LinearSnapHelper().apply {
// Some other code
}.attachToRecyclerView(this)
}

最佳答案

在这种情况下,您可以将显式标签应用于外部lambda:

recycler_view.apply recycler@{
// Some other code
LinearSnapHelper().attachToRecyclerView(this@recycler)
}

但是嵌套 apply块看起来并不惯用,可能会造成混淆,我建议对 recycler_view使用其他作用域函数,例如 let:
recycler_view.let { recycler ->
// Some other code
LinearSnapHelper().attachToRecyclerView(recycler)
}

关于android - 如何在范围内使 `this`引用Kotlin Android Extension类型类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62371582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com