Kotlin扩展函数和运算符重载

1 扩展函数

扩展函数表示即使在不修改某个类的源码的情况下,仍然可以打开这个类,向该类添加新的函数。

定义扩展函数只需要在函数名的前面加上一个ClassName.的语法结构,就表示将该函数添加到指定类当中了。

1
2
3
fun ClassName.methodName(param1: Int, param2: Int): Int {
return 0
}
2 运算符重载

符重载使用的是operator关键字,只要在指定函数的前面加上operator关键字,就可以实现运算符重载的功能了。

以加号运算符为例,如果想要实现让两个对象相加的功能,那么它的语法结构如下:

1
2
3
4
5
class Obj {
operator fun plus(obj: Obj): Obj {
// 处理相加的逻辑
}
}

实现字符串的连乘, 定义为顶层函数:

1
2
3
4
5
6
7
8
9
operator fun String.times(n : Int): String {
val builder = StringBuilder()
repeat(n) {
builder.append(this)
}
return builder.toString()
}

var str = "abc" * 3