25.擴(kuò)展




/**
 * 描述:擴(kuò)展:對(duì)既有的類增加新功能而無需繼承該類,即便無法獲取其源代碼
 * 主要作用是"立即"為相關(guān)類整體上添加"工具類(Utils)"方法或?qū)傩?,高效?yōu)雅。
 * Kotlin支持:擴(kuò)展函數(shù),擴(kuò)展屬性。
 * 與接受者類中參數(shù)、名稱都一樣的擴(kuò)展是無效的。
 * 盡量避免與已有的名字重名,如果一定要重名,參數(shù)名和類型也要不一樣。
 * 作者:jet
 * 創(chuàng)建時(shí)間: 2017-11-22 11:12
 * 修改人:
 * 修改時(shí)間:
 * 修改內(nèi)容:
 */

//擴(kuò)展函數(shù):fun 接受者類型。新擴(kuò)展函數(shù)名(參數(shù)列表){//函數(shù)實(shí)現(xiàn)}
//1.普通函數(shù)擴(kuò)展:整數(shù)的平方
fun Int.square():Int{
    return this*this
}

//2.泛型函數(shù)擴(kuò)展:取數(shù)字類型數(shù)組中最大的一個(gè)元素
fun<T> Array<T>.biggest():T
    where T:Number,
          T:Comparable<T>{
    var biggest = this[0]

    for (i in 1..lastIndex){
        val element = this[i]
        if (element >biggest){
            biggest = element
        }
    }
    return biggest
}


//擴(kuò)展屬性:var 接受者類型。新擴(kuò)展屬性名:類型
//只能擴(kuò)展組合屬性,既只能有g(shù)et和set形式,不能初始化

//1.普通屬性擴(kuò)展:整數(shù)的下一數(shù)
val Int.next:Int
    get() = this+1

//2.泛型屬性擴(kuò)展:數(shù)字類型的半徑對(duì)應(yīng)的面積 πr2
val<T:Number>T.area:Double
    get() = 3.14159*this.toDouble()*this.toDouble()

fun main(args: Array<String>) {
    println(11.square())
    println(arrayOf(1,2,3).biggest())

    println(3.next)

    println('A'.toByte().area)
}



出自:http://www.xiaoboswift.com/course/54

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

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

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