Kotlin中的作用域解析运算符

Kotlin中的作用域解析运算符,kotlin,Kotlin,我已经阅读了以下语法。我不知道为什么要在其中使用范围解析运算符 class XyzFragment : Fragment() { lateinit var adapter: ChatAdapter override fun onViewCreated(view: View?, savedInstanceState: Bundle?) { if (!::adapter.isInitialized) { <-- This one ad

我已经阅读了以下语法。我不知道为什么要在其中使用范围解析运算符

class XyzFragment : Fragment() {

    lateinit var adapter: ChatAdapter

    override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
        if (!::adapter.isInitialized) { <-- This one
            adapter = ChatAdapter(this, arrayListOf())
        }
    }
}
XyzFragment类:Fragment(){
lateinit变量适配器:ChatAdapter
覆盖已创建的视图(视图:view?,savedInstanceState:Bundle?){

if(!::adapter.isInitialized){
是Kotlin中this::
的缩写形式

是用于创建成员引用或类引用的运算符。例如

class Test {        
    fun foo() {

    }

    fun foo2(value: Int) {

    }

    fun bar() {
        val fooFunction = ::foo
        fooFunction.invoke()  // equals to this.foo()
        val foo2Function = ::foo2
        foo2Function.invoke(1)  // equals to this.foo2(1)
        val fooFunction2 = Test::foo
        val testObject = Test()
        fooFunction2.invoke(this) // equals to this.foo()
        fooFunction2.invoke(testObject) // equals to testObject.foo()
    }
}

这主要用于反射和传递函数。

仅供参考,在Kotlin中尝试编译此函数时,它是否仍被称为“范围解析”运算符?在文档中的任何地方都看不到该名称。@VishnuHaridas否,因为它从来没有这样调用过。这可能是您需要的。此外,您应该问一个新问题,而不是写注释。