范围分辨率运营商在Kotlin
我已阅读以下语法。 我不知道为什么使用范围解析运算符。
class XyzFragment : Fragment() { lateinit var adapter: ChatAdapter override fun onViewCreated(view: View?, savedInstanceState: Bundle?) { if (!::adapter.isInitialized) { <-- This one adapter = ChatAdapter(this, arrayListOf()) } } }
我想知道什么是在if (!::adapter.isInitialized) {
语句。
先谢谢了
::
是this::
Kotlin的简短forms。
::
是创建成员引用或类引用的运算符。 例如,
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() } }
这主要用于reflection和传递function。