1.扩展函数表示即使在不修改某个类源码的情况下,仍然可以打开这个类,向该类添加新的函数。
在顶层文件定义如下这样一个方法,就能给String类添加一个lettersCount方法。
fun String.lettersCount():Int{
var count=0
for (char in this){
count++
}
return count
}
2.运算符重载
运算符重载一定是写在类里面的,这个类的对象想要用+-*/等符号来简明扼要的定义一个函数,其实和定义一个方法差不多,只不过用符号来表示方法。
operator fun plus(num:Int):Int{
return 1+num;
}
语法糖表达式 | 实际调用函数 |
---|---|
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.compareTo(b) |
a<b | a.compareTo(b) |
a>=b | a.compareTo(b) |
a<=b | a.compareTo(b) |
a..b | a.rangeTo(b) |
a[b] | a.get(b) |
a[b]=c | a.set(b,c) |
a in b | a.contains(b) |