当前位置: 首页 > 知识库问答 >
问题:

如何在Kotlin中从'apply'中访问variable.isinitialized?

司马彦
2023-03-14
// private lateinit var someAdapter: SomeAdapter

recycler_view.apply {
    this.layoutManager = LinearLayoutManager(context)
    if (this::someAdapter.isInitialized) { // Compilation error.
        this.adapter = someAdapter
    }
}

共有1个答案

濮阳翔
2023-03-14

可以通过this@outerclass访问外部this。但是,如果您没有任何其他some adapter,您也可以省略@yourouterclass这个,而只需使用以下代码:

if (::someAdapter.isInitialized) {

因此,鉴于以下情况,outersomevar是指:

class Outer<T> where T : Any {
  lateinit var someVar : T
  inner class Inner {
    fun isItInitialized() = ::someVar.isInitialized
  }
}

然而,鉴于以下情况:

class Outer<T> where T : Any {
  lateinit var someVar : T
  inner class Inner {
    lateinit var someVar : T
    fun isItInitialized() = ::someVar.isInitialized // now someVar of Inner is used
  }
}

 类似资料: