Kotlin---operator操作符使用場景

1、對象結(jié)構(gòu)

class Cat(var name:String,var gender:String){

//使用operator關(guān)鍵字定義了兩個(gè)函數(shù)

//需要注意的是,函數(shù)的名稱一定是 component+數(shù)字()

//這時(shí),如果調(diào)用了component1,那么得到的就是name

//接下來去看 主方法類,Main類

? ? operator fun component1() =name

? ? operator fun component2() =gender

}

使用:

val cat =Kotlin.Cat("Tom", "boy")

//注意這里的賦值

//括號中可以包含任意個(gè)元素

//這里有兩個(gè),就分別對應(yīng) component1() 和 component2()

//如果有第三個(gè),那么就應(yīng)該對應(yīng) component3() 方法

val (name,gender) =cat

2、屬性代理

class Example {

? ? var p: String by Delegate()

}

代理類:

class Delegate {

? ? operator fun getValue(thisRef: Any?, property: KProperty<*>): String {

? ? ? ? return "$thisRef, thank you for delegating '${property.name}' to me!"

? ? }

? ? operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {

? ? ? ? println("$value has been assigned to '${property.name} in $thisRef.'")

? ? }

}

使用:

val e = Example()

println(e.p) // will print "Example@33a17727, thank you for delegating ‘p’ to me!"

e.p = "NEW" // will print "NEW has been assigned to ‘p’ in Example@33a17727."

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容