/**
* 描述:让一个类型能被"广泛"使用,即通用化,称之为"泛型"。
* 一般用于函数的参数类型定义,让函数更通用。
* 作者:jet
* 创建时间: 2017-11-22 10:34
* 修改人:
* 修改时间:
* 修改内容:
*/
fun main(args: Array<String>) {
//最常见的例子,print和println函数,几乎可以放任意类型的参数
println(2)
println("泛型")
println(arrayOf("Swift","Kotlin","iOS","Android").joinToString())
//arrayOf 创建数组,参数也可以是任意类型
val a = arrayOf(1,2,3)
//定义一个泛型函数:<T>,T代表一个占位符,用尖括号包含
fun<T> showText(para: T){
println(para)
}
showText(3)
showText("Kotlin 快速入门!")
//有时候系统提供的泛型函数很好
//比如求和
// val sum = arrayOf(1,3,2).sumBy { it }
// println("sum = $sum")
//泛型约束:<泛型占位符:类型>
//比如仅限数字类型
fun <T:Number>sum(vararg number:T):Double{
return number.sumByDouble { it.toDouble() }
}
println(sum(1.0,2,4,-100,0.4))
//多重约束:where 语句,各个约束用逗号分隔。写在函数体之前。
//例:把数组中大于某个元素(阈值)的部分取出并升序排列。
//满足条件:数字型(有大小),可比较型(能排序)
// fun <T> biggerPart(list:Array<T>,threshild:T):List<T> {
// return list.filter { it >= threshild }.sor
// }
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).joinToString())
}
27.泛型和泛型约束
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- weak strong dance 估计,目前效果已经显示不出来了,首先,创建一个项目,定一个block属性。创建...
- 日前公布的三星专利申请展示了一台具有扩展追踪能力的Gear VR头显。该文件显示,系统不仅可以追踪头显的位置,而且...