扩展
对既有的类增加新功能而无需继承该类,即便无法获取其源代码
主要作用是为相关类整体上添加工具类方法或属性,高效优雅.
kotlin支持:扩展函数,扩展属性
扩展函数: 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() {}
只能扩展组合属性,即只能有get 和 set 形式,不能初始化
1.普通属性扩展:整数的下一数
val Int.next : Int
get() = this + 1
2.泛型属性扩展: 数字类型的半径对应的面积 πr²
val <T: Number> T.area : Double
get() = 3.14159 * this.toDouble() * this.toDouble()
fun main (args: Array<String>){
println(10.square())
println(arrayOf(1,2,3).biggest())
println(3.next)
println('Q'.toByte().area)
}
Kotlin与Swift最大的区别是什么?
Swift支持扩展协议,但Kotlin目前不支持
Kotlin中的扩展是静态的,本质上只是单纯为类添加新函数.
网友评论