1、扩展函数
首先看一下什么是扩展函数。扩展函数表示即使在不修改某个类的源码的情况下,仍然可以打开这个类,向该类添加新的函数。
语法结构
fun ClassName.methodName(param1: Int, param2: Int): Int {
return 0
}
相比于定义一个普通的函数,定义扩展函数只需要在函数名的前面加上一个ClassName.的语法结构,就表示将该函数添加到指定类当中了。
向String类中添加一个扩展函数,因此需要先创建一个String.kt文件。文件名虽然并没有固定的要求,但是我建议向哪个类中添加扩展函数,就定义一个同名的Kotlin文件,这样便于你以后查找。
在String.kt文件中编写如下代码:
fun String.lettersCount(): Int {
var count = 0
for (char in this){
if(char.isLetter()){
count++
}
}
return count
}
使用:
fun main(){
val count = "ABCDEFG1234".lettersCount()
println(count)
}
2、运算符重载
运算符重载使用的是operator关键字,只要在指定函数的前面加上operator关键字,就可以实现运算符重载的功能了。但问题在于这个指定函数是什么?这是运算符重载里面比较复杂的一个问题,因为不同的运算符对应的重载函数也是不同的。比如说加号运算符对应的是plus()函数,减号运算符对应的是minus()函数。
class Money(val value: Int) {
operator fun plus(money: Money): Money{
val sum = value + money.value
return Money(sum)
}
operator fun plus(newValue: Int):Money{
val sum = value + newValue
return Money(sum)
}
}
fun main(){
val money1 = Money(5)
val money2 = Money(10)
val money3 = money1 + money2
val money4 = money3 + 20
println(money4.value)
}