/**
* 描述:扩展:对既有的类增加新功能而无需继承该类,即便无法获取其源代码
* 主要作用是"立即"为相关类整体上添加"工具类(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)
}
25.扩展
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 以前我用微软的HelpPage来自动生成的webAPI帮助文档。在使用了一段时间后发现只能显示Controller...