zoukankan      html  css  js  c++  java
  • Kotlin基础-扩展

    /*
    * 扩展:对既有的类增加新功能而无需继承该类,即无法获取其源代码
    * 主要作用:“立即”为相关类整体上添加“工具类”方法或属性
    * Kotlin支持:扩展函数,扩展属性
    *
    *与接受者类中参数,名字都一样的扩展是无效的
    * 尽量避免与已有的名字重名,如果一定要重名,参数名和类型也要不一样
    * */

    //扩展函数:fun 接受者类型.新扩展函数名(参数类别){函数实现}

    //普通函数扩展:整数平方
    fun Int.square():Int{
    return this*this
    }
    //泛型属性扩展
    //1.普通属性扩展。例子:整数的下一个数字
    val Int.next:Int
    get() = this+1
    //2.泛型属性扩展:数字类型中半径对应的面积:πr^2
    val <T:Number>T.area:Double
    get() = 3.14*this.toDouble()*this.toDouble()


    fun main(args: Array<String>) {
    println(3.square())
    println(3.2.area)
    print("5".toByte().area)
    val a= arrayOf(1,2,6,-1,10)
    println(a.big())
    println(a.smal())

    println(3.next)
    }

    //泛型函数扩展:取数字型数组中最大元素
    fun <T>Array<T>.big():T
    where T:Number,T:Comparable<T>
    {
    var big=this[0]
    for (i in 1..lastIndex){
    val element=this[i]
    if (element>big)
    big=element
    }
    return big
    }

    //泛型函数扩展:取数字型数组中最小元素
    fun <T>Array<T>.smal():T
    where T:Number,T:Comparable<T>
    {
    var smal=this[0]
    for (i in 1..lastIndex){
    val element=this[i]
    if (element<smal)
    smal=element
    }
    return smal
    }
  • 相关阅读:
    iOS开发-UIScrollView原理
    关于tableView点击状态栏列表回到顶部的说明
    实用技术之bugly
    KVO你所不知道的"坑"
    iOS iPhone SDK 包含哪些东西?
    NSTime的全面认识
    四 数据结构与算法总结(一)
    三 数据结构 --数和二叉树
    二 线性表
    一 数据结构的概念,时间复杂度和空间复杂度
  • 原文地址:https://www.cnblogs.com/my334420/p/7070882.html
Copyright © 2011-2022 走看看