25.扩展

作者: jetgege | 来源:发表于2017-11-22 10:36 被阅读6次
    
    
    
    /**
     * 描述:扩展:对既有的类增加新功能而无需继承该类,即便无法获取其源代码
     * 主要作用是"立即"为相关类整体上添加"工具类(Utils)"方法或属性,高效优雅。
     * Kotlin支持:扩展函数,扩展属性。
     * 与接受者类中参数、名称都一样的扩展是无效的。
     * 尽量避免与已有的名字重名,如果一定要重名,参数名和类型也要不一样。
     * 作者:jet
     * 创建时间: 2017-11-22 11:12
     * 修改人:
     * 修改时间:
     * 修改内容:
     */
    
    //扩展函数:fun 接受者类型。新扩展函数名(参数列表){//函数实现}
    //1.普通函数扩展:整数的平方
    fun Int.square():Int{
        return this*this
    }
    
    //2.泛型函数扩展:取数字类型数组中最大的一个元素
    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
    }
    
    
    //扩展属性:var 接受者类型。新扩展属性名:类型
    //只能扩展组合属性,既只能有get和set形式,不能初始化
    
    //1.普通属性扩展:整数的下一数
    val Int.next:Int
        get() = this+1
    
    //2.泛型属性扩展:数字类型的半径对应的面积 π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

    相关文章

      网友评论

          本文标题:25.扩展

          本文链接:https://www.haomeiwen.com/subject/qcrnvxtx.html