一、扩展函数
定义: 扩展函数表示即使在不修改某个类的源码的情况下,仍然可以打开这个类,向该类添加新的函数。
语法结构:
fun ClassName.methodName(param1: Int, param2: Int): Int {
return 0;
}
定义扩展函数只需要在函数名前面加上一个ClassName.的语法结构,就表示将该函数添加到指定类中了。
二、运算符重载
在编程语言里,两个数相加表示求这两个数之和;Java中两个字符串相加表示对这两个字符串进行拼接。而Kotlin的运算符重载却允许任意两个对象进行相加,或者进行更多其它的运算操作。
运算符重载使用的是operator关键字,只要在指定函数的前面加上operator关键字,就可以实现运算符重载的功能。例如加号对应的是plus()函数。
示例:
class Obj {
operator fun plus(Obj: obj) : Obj {
//处理相加的逻辑
}
}
调用方式:
val obj1 = Obj();
val obj2 = Obj();
val obj3 = obj1 + obj2;
语法糖表达式和实际调用函数对照表:
语法糖表达式 | 实际调用函数 |
---|---|
a + b | a.plus(b) |
a - b | a.minus(b) |
a * b | a.times(b) |
a / b | a.div(b) |
a % b | a.rem(b) |
a++ | a.inc() |
a- - | a.dec() |
+a | a.unaryPlus() |
-a | a.unaryMinus() |
!a | a.not() |
a == b | a.equals(b) |
a[b] | a.get(b) |
a[b] = c | a.set(b, c) |
a in b | b.contains(a) |
PS:
本文整理自《第一行代码 Android》第三版,笔记文章,希望对大家有所帮助!