25.扩展




/**
 * 描述:扩展:对既有的类增加新功能而无需继承该类,即便无法获取其源代码
 * 主要作用是"立即"为相关类整体上添加"工具类(Utils)"方法或属性,高效优雅。
 * Kotlin支持:扩展函数,扩展属性。
 * 与接受者类中参数、名称都一样的扩展是无效的。
 * 尽量避免与已有的名字重名,如果一定要重名,参数名和类型也要不一样。
 * 作者:jet
 * 创建时间: 2017-11-22 11:12
 * 修改人:
 * 修改时间:
 * 修改内容:
 */

//扩展函数:fun 接受者类型。新扩展函数名(参数列表){//函数实现}
//1.普通函数扩展:整数的平方
fun Int.square():Int{
    return this*this
}

//2.泛型函数扩展:取数字类型数组中最大的一个元素
fun Array.biggest():T
    where T:Number,
          T:Comparable{
    var biggest = this[0]

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


//扩展属性:var 接受者类型。新扩展属性名:类型
//只能扩展组合属性,既只能有get和set形式,不能初始化

//1.普通属性扩展:整数的下一数
val Int.next:Int
    get() = this+1

//2.泛型属性扩展:数字类型的半径对应的面积 πr2
valT.area:Double
    get() = 3.14159*this.toDouble()*this.toDouble()

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

    println(3.next)

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



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

你可能感兴趣的:(25.扩展)