19.泛型和泛型约束(generics,genericConstraint)

泛型和泛型约束
让一个类型能被广泛使用,及通用化,称之为泛型
一般用于函数的参数类型定义,让函数更通用
fun main (args:Array){
       //最常见的例子,print和println函数,几乎可以放任意类型的参数
       //arrayOf创建数组,参数也可以是任意类型
       val a = arrayOf(1,2,3)
       //定义一个泛型函数:,T代表一个占位符,用尖括号包含
       fun  showText(para:T){
              println(para)
       }
       showText(3)
       
       //系统提供的泛型函数,求和
       val sum = arrayOf(1,3,-2).sumBy{it}
       println("sum=${sum}")
    
       //泛型约束:<泛型占位符:类型>
       //1.比如仅限数字类型
       fun  sum(vararg numbers: T) : Double{
              return numbers.sumByDouble{it.toDouble()}
       }
       
       println(sum(1.0,2,3.5,100,9999)

       //多重约束:where语句,各个约束用逗号分隔,卸载函数体之前
       //把数组中大于某个元素的部分取出并升序排列
       //需满足条件:数字型(有大小),可比较(能排序)
       fun  biggerPart(list:Array,threshold:T):List where T : Number,T:Comparable{
              return list.filter{ it  >=  threshold }.sorted()
        }
        val aList = arrayOf(1,0,55,99,3,2,666)
        println(biggerPart(aList,2))
}

你可能感兴趣的:(19.泛型和泛型约束(generics,genericConstraint))