為了表示當(dāng)前的 接收者 我們使用 this 表達(dá)式:
目前成都創(chuàng)新互聯(lián)已為上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站托管運(yùn)營(yíng)、企業(yè)網(wǎng)站設(shè)計(jì)、青川網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。— 在類的成員中,this指的是該類的當(dāng)前對(duì)象。
— 在擴(kuò)展函數(shù)或者帶有接收者的函數(shù)字面值中,this 表示在點(diǎn)左側(cè)傳遞的 接收者 參數(shù)。
如果 this 沒(méi)有限定符,它指的是最內(nèi)層的包含它的作用域。要引用其他作用域中的 this,請(qǐng)使用 標(biāo)簽限定符
限定的 this
要訪問(wèn)來(lái)自外部作用域的this(一個(gè)類 或者擴(kuò)展函數(shù),或者帶標(biāo)簽的帶有接收者的函數(shù)字面值)我們使 用 this@label ,其中 @label 是一個(gè)代指 this 來(lái)源的標(biāo)簽:
class A { // 隱式標(biāo)簽 @A inner class B { // 隱式標(biāo)簽 @B fun Int.foo() { // 隱式標(biāo)簽 @foo val a = this@A // A 的 this val b = this@B // B 的 this val c = this // foo() 的接收者,一個(gè) Int val c1 = this@foo // foo() 的接收者,一個(gè) Int val funLit = lambda@ fun String.() { val d = this // funLit 的接收者 }
val funLit2= { s: String ->
// foo() 的接收者,因?yàn)樗?lambda 表達(dá)式
// 沒(méi)有任何接收者 val d1 = this
}
}
}
}
Implicit this
當(dāng)對(duì) this 調(diào)用成員函數(shù)時(shí),可以省略 this. 部分。但是如果有一個(gè)同名的非成員函數(shù)時(shí),請(qǐng)謹(jǐn)慎使用,因?yàn)?在某些情況下會(huì)調(diào)用同名的非成員
fun printLine() { println("Top-level function") }
class A {
fun printLine() { println("Member function") }
fun invokePrintLine(omitThis: Boolean= false) {
if (omitThis) printLine()
else this.printLine()
}
}
A().invokePrintLine()// Member functionA().invokePrintLine(omitThis = true) // Top-level function
當(dāng)前文章:kotlin更多語(yǔ)言結(jié)構(gòu)——>This表達(dá)式-創(chuàng)新互聯(lián)
當(dāng)前地址:http://jinyejixie.com/article42/csddhc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、網(wǎng)站建設(shè)、建站公司、網(wǎng)頁(yè)設(shè)計(jì)公司、移動(dòng)網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容