笔记:kotlin:扩展函数和运算符重载

扩展函数:

概念:在不修改某个类的源码的前提下,为该类添加新的函数,无论该类是否为final类型。
语法结构

fun ClassName.methodName(param1: Int, param2: Int): Int {
    //相关逻辑
    return 0
}

tips:最好定义成顶层函数,方便全局使用。

运算符重载:

概念:同一运算符在不同的环境所表现的效果不同,如”+“在两个Int值之间表示两者的数值相加,在两个字符串之间表示,将字符串拼接,同时kotlin允许我们将任意两个类型的对象进行”+“运算,或者其他运算符操作。
语法结构:如下,其中operator 为运算符重载的关键字

class A {
    operator fun plus(a: A): A {
        //相关逻辑
    }
}

”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 < b“、”a >= 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“对应的重载函数为b.contains(a)

扩展函数和运算符重载的合体:

operator fun ClassName.plus(param1: ClassName): ClassName {
    //相关逻辑
    return result
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。