19.泛型和泛型约束(generics,genericConst

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

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

猜你喜欢

热点阅读