Kotlin扩展函数和运算符重载

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)
}

image-20210903140348867

猜你喜欢

转载自blog.csdn.net/qq_41811862/article/details/120808887