在正式介绍本文前,首先推荐十分钟基础入门-kotlin,基础简单入门教学2

扩展函数

在不修改某个对象的代码为前提,可以实现扩展函数供其他使用
例如,如果是想计算一长串字符串中数字的数目。在java中采用的方式是写一个静态工具方法类,参数为字符串String;返回的参数是一个int,具体的数值。
来,装个逼:针对上述需求,通过kotlin实现的

fun main() {
    println("r3r13531rf2ef".countNum())
}

fun String.countNum() : Int{
    var count = 0;
    for( char in this){
        if(char.isDigit()){
            count++
        }
    }
    return count
}

得到的结果:

【Kotlin】简单入门教学3 - 扩展函数和运算符重载_运算符

运算符重载

常见的运算符有加减乘除。一般来说只有数值可以这样操作,而在kotlin中可以对对象进行运算。关键词operator

每一个运算符有固定的一个函数名,详细可见下图

【Kotlin】简单入门教学3 - 扩展函数和运算符重载_java_02


代码实现:

fun main() {
    val money_50 = Money(50)
    val money_20 = Money(20)
    var result = money_50 - money_20
    val gold = Gold()
    var goldResult =  money_20 + gold
    println(result.value)
    println(goldResult.value)
}
//在kotlin中运算符可以进行对象运算即加减乘除等等
class Money(val value: Int){
    //进行money进行运算
    operator fun minus(other: Money): Money{
        val result = value - other.value
        return Money(result)
    }
    //不限于对象本身可以是其他对象
    operator fun plus(other: Gold): Money{
        val result = value + other.value
        return Money(result)
    }
}

运行结果:

【Kotlin】简单入门教学3 - 扩展函数和运算符重载_字符串_03